{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from kalmanfilter import KalmanFilter\n",
    "from datapoint import DataPoint\n",
    "from fusionekf import FusionEKF\n",
    "from tools import get_RMSE, cartesian_to_polar\n",
    "from helpers import parse_data, get_state_estimations, print_EKF_data\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "lidar_R = np.matrix([[0.0225, 0], \n",
    "                     [0, 0.0225]])\n",
    "\n",
    "radar_R = np.matrix([[0.09, 0, 0], \n",
    "                     [0, 0.0009, 0], \n",
    "                     [0, 0, 0.09]])\n",
    "\n",
    "lidar_H = np.matrix([[1, 0, 0, 0],\n",
    "                     [0, 1, 0, 0]])\n",
    "\n",
    "P = np.matrix([[1, 0, 0, 0],\n",
    "               [0, 1, 0, 0],\n",
    "               [0, 0, 1000, 0], \n",
    "               [0, 0, 0, 1000]])\n",
    "\n",
    "Q = np.matrix(np.zeros([4, 4]))\n",
    "F = np.matrix(np.eye(4))\n",
    "\n",
    "d = {\n",
    "  'number_of_states': 4, \n",
    "  'initial_process_matrix': P,\n",
    "  'radar_covariance_matrix': radar_R,\n",
    "  'lidar_covariance_matrix': lidar_R, \n",
    "  'lidar_transition_matrix': lidar_H,\n",
    "  'inital_state_transition_matrix': F,\n",
    "  'initial_noise_matrix': Q, \n",
    "  'acceleration_noise_x': 5, \n",
    "  'acceleration_noise_y': 5\n",
    "}\n",
    "\n",
    "EKF = FusionEKF(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING: in cartesian_to_polar(): d_squared < THRESH\n",
      "WARNING: in calculate_jacobian(): d_squared < THRESH\n"
     ]
    }
   ],
   "source": [
    "all_sensor_data, all_ground_truths = parse_data(\"data/data-2.txt\")\n",
    "all_state_estimations = get_state_estimations(EKF, all_sensor_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "lidar_xs, lidar_ys = [], []\n",
    "radar_xs, radar_ys, radar_angles = [], [], []\n",
    "truth_xs, truth_ys, truth_angles = [], [], []\n",
    "state_xs, state_ys, state_angles = [], [], []\n",
    "    \n",
    "for s, t, p in zip(all_sensor_data, all_ground_truths, all_state_estimations):\n",
    "    \n",
    "  if s.get_name() == \"lidar\":\n",
    "    x, y = s.get_raw()\n",
    "    lidar_xs.append(x)\n",
    "    lidar_ys.append(y)\n",
    "  else:\n",
    "    x, y, vx, vy = s.get()\n",
    "    angle = np.arctan2(vy, vx)\n",
    "    radar_xs.append(x)\n",
    "    radar_ys.append(y)\n",
    "    radar_angles.append(angle + np.pi * 1 / 4)\n",
    "\n",
    "  x, y, vx, vy = t.get()\n",
    "  t_angle =  np.arctan2(vy, vy)\n",
    "  truth_xs.append(x)\n",
    "  truth_ys.append(y)\n",
    "  truth_angles.append(t_angle + np.pi * 1 / 4)\n",
    "\n",
    "  x, y, vx, vy = p.get()\n",
    "  p_angle =  np.arctan2(vy, vx)\n",
    "  state_xs.append(x)\n",
    "  state_ys.append(y)\n",
    "  state_angles.append(p_angle + np.pi * 1 / 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
       "        <span id=\"2f20c58d-2a9a-4147-856d-88911db8abdc\">Loading BokehJS ...</span>\n",
       "    </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "(function(global) {\n",
       "  function now() {\n",
       "    return new Date();\n",
       "  }\n",
       "\n",
       "  var force = true;\n",
       "\n",
       "  if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "    window._bokeh_onload_callbacks = [];\n",
       "    window._bokeh_is_loading = undefined;\n",
       "  }\n",
       "\n",
       "\n",
       "  \n",
       "  if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "    window._bokeh_timeout = Date.now() + 5000;\n",
       "    window._bokeh_failed_load = false;\n",
       "  }\n",
       "\n",
       "  var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "     \"<div style='background-color: #fdd'>\\n\"+\n",
       "     \"<p>\\n\"+\n",
       "     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "     \"</p>\\n\"+\n",
       "     \"<ul>\\n\"+\n",
       "     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "     \"</ul>\\n\"+\n",
       "     \"<code>\\n\"+\n",
       "     \"from bokeh.resources import INLINE\\n\"+\n",
       "     \"output_notebook(resources=INLINE)\\n\"+\n",
       "     \"</code>\\n\"+\n",
       "     \"</div>\"}};\n",
       "\n",
       "  function display_loaded() {\n",
       "    if (window.Bokeh !== undefined) {\n",
       "      document.getElementById(\"2f20c58d-2a9a-4147-856d-88911db8abdc\").textContent = \"BokehJS successfully loaded.\";\n",
       "    } else if (Date.now() < window._bokeh_timeout) {\n",
       "      setTimeout(display_loaded, 100)\n",
       "    }\n",
       "  }\n",
       "\n",
       "  function run_callbacks() {\n",
       "    window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "    delete window._bokeh_onload_callbacks\n",
       "    console.info(\"Bokeh: all callbacks have finished\");\n",
       "  }\n",
       "\n",
       "  function load_libs(js_urls, callback) {\n",
       "    window._bokeh_onload_callbacks.push(callback);\n",
       "    if (window._bokeh_is_loading > 0) {\n",
       "      console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "      return null;\n",
       "    }\n",
       "    if (js_urls == null || js_urls.length === 0) {\n",
       "      run_callbacks();\n",
       "      return null;\n",
       "    }\n",
       "    console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "    window._bokeh_is_loading = js_urls.length;\n",
       "    for (var i = 0; i < js_urls.length; i++) {\n",
       "      var url = js_urls[i];\n",
       "      var s = document.createElement('script');\n",
       "      s.src = url;\n",
       "      s.async = false;\n",
       "      s.onreadystatechange = s.onload = function() {\n",
       "        window._bokeh_is_loading--;\n",
       "        if (window._bokeh_is_loading === 0) {\n",
       "          console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "          run_callbacks()\n",
       "        }\n",
       "      };\n",
       "      s.onerror = function() {\n",
       "        console.warn(\"failed to load library \" + url);\n",
       "      };\n",
       "      console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "    }\n",
       "  };var element = document.getElementById(\"2f20c58d-2a9a-4147-856d-88911db8abdc\");\n",
       "  if (element == null) {\n",
       "    console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2f20c58d-2a9a-4147-856d-88911db8abdc' but no matching script tag was found. \")\n",
       "    return false;\n",
       "  }\n",
       "\n",
       "  var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.js\"];\n",
       "\n",
       "  var inline_js = [\n",
       "    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "    \n",
       "    function(Bokeh) {\n",
       "      \n",
       "      document.getElementById(\"2f20c58d-2a9a-4147-856d-88911db8abdc\").textContent = \"BokehJS is loading...\";\n",
       "    },\n",
       "    function(Bokeh) {\n",
       "      console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.css\");\n",
       "      Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.4.min.css\");\n",
       "      console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.css\");\n",
       "      Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.4.min.css\");\n",
       "    }\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    \n",
       "    if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "      for (var i = 0; i < inline_js.length; i++) {\n",
       "        inline_js[i](window.Bokeh);\n",
       "      }if (force === true) {\n",
       "        display_loaded();\n",
       "      }} else if (Date.now() < window._bokeh_timeout) {\n",
       "      setTimeout(run_inline_js, 100);\n",
       "    } else if (!window._bokeh_failed_load) {\n",
       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "      window._bokeh_failed_load = true;\n",
       "    } else if (force !== true) {\n",
       "      var cell = $(document.getElementById(\"2f20c58d-2a9a-4147-856d-88911db8abdc\")).parents('.cell').data().cell;\n",
       "      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "    }\n",
       "\n",
       "  }\n",
       "\n",
       "  if (window._bokeh_is_loading === 0) {\n",
       "    console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "    run_inline_js();\n",
       "  } else {\n",
       "    load_libs(js_urls, function() {\n",
       "      console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "      run_inline_js();\n",
       "    });\n",
       "  }\n",
       "}(this));"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from bokeh.io import output_notebook, show\n",
    "from bokeh.plotting import figure\n",
    "from bokeh.models import HoverTool\n",
    "from bokeh.models import ColumnDataSource\n",
    "output_notebook()\n",
    "\n",
    "radar_source = ColumnDataSource(data = {\n",
    "    'x' : radar_xs,\n",
    "    'y' : radar_ys,\n",
    "    'angle': radar_angles, \n",
    "})\n",
    "\n",
    "truth_source = ColumnDataSource(data = {\n",
    "    'x' : truth_xs,\n",
    "    'y' : truth_ys,\n",
    "    'angle': truth_angles, \n",
    "})\n",
    "\n",
    "state_source = ColumnDataSource(data = {\n",
    "    'x' : state_xs,\n",
    "    'y' : state_ys,\n",
    "    'angle': truth_angles, \n",
    "})\n",
    "\n",
    "lidar_source = ColumnDataSource(data = {\n",
    "    'x' : lidar_xs,\n",
    "    'y' : lidar_ys,\n",
    "})\n",
    "\n",
    "\n",
    "hover = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"1627e230-cf85-49c0-94d3-c12f9060f591\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"1627e230-cf85-49c0-94d3-c12f9060f591\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"1627e230-cf85-49c0-94d3-c12f9060f591\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '1627e230-cf85-49c0-94d3-c12f9060f591' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"c751b5af-ec5e-49f1-b944-2c82f58d94f4\":{\"roots\":{\"references\":[{\"attributes\":{\"formatter\":{\"id\":\"3b578e13-e589-4f85-991d-fd03b3bb90af\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0f8abe6e-c9c5-48da-97e6-38813e8d2ad8\",\"type\":\"BasicTicker\"}},\"id\":\"dbf67841-a2ed-4e83-8021-c09a46f8ca7d\",\"type\":\"LinearAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"fd167a5b-b4bc-4402-9ea7-c7b4d729ade4\",\"type\":\"HoverTool\"}]},\"id\":\"323a8e41-1639-4890-8bdb-cc1af93fd183\",\"type\":\"Toolbar\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6a48a150-452c-41c0-8ad4-fdb7e33f9454\",\"type\":\"Triangle\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"firebrick\"},\"line_color\":{\"value\":\"orange\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2755a5d2-cfd7-4a5f-980e-0a8284841304\",\"type\":\"Triangle\"},{\"attributes\":{},\"id\":\"69aadaa5-0189-4d42-8a4c-346734d3b85f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"61e65a95-b971-41f1-b990-fe3f1f4430a9\",\"type\":\"BasicTicker\"}},\"id\":\"5a2a467d-ac1f-4c7b-b9c1-37fbf1d2e9ae\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"69aadaa5-0189-4d42-8a4c-346734d3b85f\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"61e65a95-b971-41f1-b990-fe3f1f4430a9\",\"type\":\"BasicTicker\"}},\"id\":\"1c0e7968-a6df-4c85-adbe-ddf0c5cbe326\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"0f8abe6e-c9c5-48da-97e6-38813e8d2ad8\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"fd167a5b-b4bc-4402-9ea7-c7b4d729ade4\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"61e65a95-b971-41f1-b990-fe3f1f4430a9\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"37f763a6-f863-4f17-a278-a4318d45e294\",\"type\":\"Cross\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"c80394ba-4902-4265-9ae0-67dd3809fd3e\",\"type\":\"Cross\"},\"selection_glyph\":null},\"id\":\"63c62b10-c1b6-41f5-8897-5875af71378d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3b578e13-e589-4f85-991d-fd03b3bb90af\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c80394ba-4902-4265-9ae0-67dd3809fd3e\",\"type\":\"Cross\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"grey\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"37f763a6-f863-4f17-a278-a4318d45e294\",\"type\":\"Cross\"},{\"attributes\":{},\"id\":\"8bf0d771-9e8e-4497-a01f-88da287157f8\",\"type\":\"ToolEvents\"},{\"attributes\":{\"label\":{\"value\":\"radar measured velocity direction\"},\"renderers\":[{\"id\":\"63c62b10-c1b6-41f5-8897-5875af71378d\",\"type\":\"GlyphRenderer\"}]},\"id\":\"8c18276a-b8ac-4ac1-ba3a-bcf67986d066\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"0658e5f6-6414-4ba2-9ec9-a52c460995a9\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2755a5d2-cfd7-4a5f-980e-0a8284841304\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"6a48a150-452c-41c0-8ad4-fdb7e33f9454\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"0e71a37a-2d9e-4281-8425-4e791c23d34f\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"b501d06e-7795-4824-8e68-63774e1bf156\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"radar measurements\"},\"renderers\":[{\"id\":\"0e71a37a-2d9e-4281-8425-4e791c23d34f\",\"type\":\"GlyphRenderer\"}]},\"id\":\"e43ce468-1a47-43e5-a7a5-0aff624c43d9\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"cd8dd842-a8f5-4b7c-9490-dee3f2074f3b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.8115954333974483,0.8374241433974483,0.8587034533974482,0.8847589033974483,0.9096662633974483,0.9307472633974483,0.9584734633974483,0.9827248633974484,1.0015480633974483,1.0220566633974482,1.0397609633974483,1.0581912633974482,1.0757311633974482,1.0892985633974483,1.1022244633974483,1.1144393633974483,1.1237819633974484,1.1326535633974482,1.1360961633974482,1.1410151633974484,1.1407104633974483,1.1447156633974482,1.1443779633974482,1.1420468633974483,1.1419493633974482,1.1341204633974482,1.1294385633974482,1.1209849633974482,1.1154582633974481,1.1089021633974483,1.1022626633974482,1.0909114633974482,1.0828103633974484,1.0775091633974483,1.0664208633974483,1.0549730633974483,1.0475788633974483,1.0393511633974484,1.0307653633974483,1.0240146633974483,1.0151529633974483,1.0074725633974482,1.0007657633974483,0.9928131633974483,0.9873998633974482,0.9783785633974482,0.9696163633974483,0.9678251633974483,0.9583859633974483,0.9525999633974482,0.9464447633974483,0.9393021633974483,0.9314619633974482,0.9265130633974483,0.9175808633974483,0.9183949633974483,0.9112821633974483,0.9050895633974483,0.9011501633974482,0.8986041633974483,0.8921872633974482,0.8882747633974483,0.8894078633974483,0.8858612633974483,0.8887250633974483,0.8886887633974483,0.8881904633974482,0.8907427633974483,0.8932654633974483,0.8934478633974483,0.9047992633974483,0.9097515633974483,0.9119451633974482,0.9175449633974483,0.9257989633974483,0.9292035633974483,0.9335976633974483,0.9447177633974483,0.9486367633974483,0.9561073633974483,0.9621583633974483,0.9617327633974483,0.9647729633974483,0.9729415633974483,0.9773913633974483,0.9741216633974483,0.9804797633974482,0.9820184633974482,0.9785157633974483,0.9801142633974483,0.9777381633974482,0.9766574633974483,0.9763884633974482,0.9748518633974483,0.9719991633974483,0.9706172633974482,0.9697582633974483,0.9671568633974483,0.9616302633974483],\"x\":[0.0,1.8120890065536968,4.195282898131183,6.439263951838519,8.897494094590057,11.444709998562601,13.657165989272517,16.28195527013715,19.363047979292386,21.621344108905937,24.560055363578353,26.541910417680082,29.47157812077767,31.792798199174168,35.05993022827336,37.49732769560551,39.900941693889585,42.571418733066885,45.64898040657271,47.93305501262085,50.5736513340699,53.52770394894018,55.8669730738404,58.579938550190896,60.764808537463345,63.74778170921791,65.88384342247551,68.67592580850912,70.7403296216073,73.0731712914125,74.9747821562663,77.13859354321183,79.17177113047259,81.1423002728638,82.50846076380661,84.28976505279456,85.97430637614002,87.61705943212222,88.41905450805521,89.78205385511532,90.84185210246,92.04917907179099,93.31857958173161,93.74234112734182,94.49395448086288,95.60968374739882,96.55895399200789,97.53327961948968,98.41615468912647,98.97815733129316,100.44057706513598,101.16930696477358,102.08068815353765,102.77582654264684,103.90499434379076,105.31590025369279,106.43875960011057,108.13143858278916,109.3876500232867,111.42573952890967,112.79694011066982,114.91642361180433,116.87120218708426,118.84992917989058,120.93423833970587,123.14220229018764,125.37589942108642,127.5063888288843,130.3344485564308,132.446615000554,135.1266605192927,137.65320233691628,140.30474598765764,142.6256163737405,145.78932837378665,148.14635115055142,150.64925114427615,153.46554947246355,156.009171438787,159.01391055766305,161.52867447954372,164.11556634790054,166.74825687834473,169.34502678163898,172.13478419876878,174.4744732696961,177.21134920572447,179.54285820847673,182.0465924352896,184.83348920835274,187.29582978840955,189.73812421115719,191.6823753367516,193.5554476756831,195.50671773399304,197.5820787172974,199.35645559429446,200.93225566805958,202.65049161342554,203.80860115543211],\"y\":[0.0,0.04748264786462898,0.21846084257143278,0.4728794469724612,0.8869824485022623,1.4295787391050676,1.9991549428591089,2.8464834078654198,3.871222944913029,4.747620196138109,5.923344376318675,6.900747701680275,8.245189957744993,9.498908426060733,10.995322083099882,12.294281139537029,13.62433332599153,14.98171157454254,16.521338038994937,17.534855906435702,18.783412268872503,19.862010699894274,20.984967829539112,21.981451628861056,22.63984645834687,23.7441692656956,23.954128228185038,24.60585513894103,24.672752931702785,25.034285363594634,25.13775096364854,25.294760630930256,24.96978639685302,24.870365557040074,24.811385251764612,24.33124510854905,23.754746342657693,23.512732123359523,22.949778454520246,22.482580932036498,22.097357323528183,21.528897814318178,21.071201563577834,20.507109611183132,19.885448646965767,19.58036957994624,18.86880294686719,18.173452009657918,18.155616058011667,17.294873926738514,16.952114087407445,16.435307956573727,15.835855802267123,15.119504041990588,14.760651532259974,14.002587512464663,14.240073777894272,13.684378949243364,13.15564377721389,12.955666227391628,12.824120189313772,12.318684155068672,12.06590888021587,12.406315021995534,12.190468227480695,12.769378268831465,12.996404104352319,13.153033749571646,13.781046422209648,14.342327973694676,14.657480322136617,16.514498795966816,17.53786603036044,18.14581064875866,19.3785257148268,20.937624190378223,21.814759909721822,22.91149960336169,25.067774793011935,26.19025159958435,27.84544498336496,29.315046248434605,29.71208219098014,30.70626687316412,32.666633096223684,33.915666311486454,33.846738229507025,35.47669757489859,36.262562461987635,36.14505716298903,36.93751853374997,36.951022287908145,37.11469778282844,37.42335772049185,37.489076100122446,37.302984337874236,37.35274592637205,37.46936679669847,37.24453567970666,36.29413616641104]}},\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"dbf67841-a2ed-4e83-8021-c09a46f8ca7d\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"1c0e7968-a6df-4c85-adbe-ddf0c5cbe326\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"dbf67841-a2ed-4e83-8021-c09a46f8ca7d\",\"type\":\"LinearAxis\"},{\"id\":\"4fc07314-f6d6-47d0-8dc0-ba868a48725d\",\"type\":\"Grid\"},{\"id\":\"1c0e7968-a6df-4c85-adbe-ddf0c5cbe326\",\"type\":\"LinearAxis\"},{\"id\":\"5a2a467d-ac1f-4c7b-b9c1-37fbf1d2e9ae\",\"type\":\"Grid\"},{\"id\":\"4ea05d40-d980-4695-ae37-efe0a757250b\",\"type\":\"Legend\"},{\"id\":\"0e71a37a-2d9e-4281-8425-4e791c23d34f\",\"type\":\"GlyphRenderer\"},{\"id\":\"63c62b10-c1b6-41f5-8897-5875af71378d\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"0658e5f6-6414-4ba2-9ec9-a52c460995a9\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"8bf0d771-9e8e-4497-a01f-88da287157f8\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"323a8e41-1639-4890-8bdb-cc1af93fd183\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"b501d06e-7795-4824-8e68-63774e1bf156\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"cd8dd842-a8f5-4b7c-9490-dee3f2074f3b\",\"type\":\"DataRange1d\"}},\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"items\":[{\"id\":\"e43ce468-1a47-43e5-a7a5-0aff624c43d9\",\"type\":\"LegendItem\"},{\"id\":\"8c18276a-b8ac-4ac1-ba3a-bcf67986d066\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4ea05d40-d980-4695-ae37-efe0a757250b\",\"type\":\"Legend\"},{\"attributes\":{\"plot\":{\"id\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0f8abe6e-c9c5-48da-97e6-38813e8d2ad8\",\"type\":\"BasicTicker\"}},\"id\":\"4fc07314-f6d6-47d0-8dc0-ba868a48725d\",\"type\":\"Grid\"}],\"root_ids\":[\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"c751b5af-ec5e-49f1-b944-2c82f58d94f4\",\"elementid\":\"1627e230-cf85-49c0-94d3-c12f9060f591\",\"modelid\":\"ea700c0e-1b53-49d7-aa8d-2c11d94a882c\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"1627e230-cf85-49c0-94d3-c12f9060f591\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###################################################################\n",
    "#  RADAR MEASUREMENTS WITH ORIENTATION\n",
    "###################################################################\n",
    "\n",
    "hover2 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover2])\n",
    "\n",
    "p.triangle(\n",
    "  'x', 'y', size = 10, \n",
    "  fill_color = \"firebrick\",\n",
    "  line_color = \"orange\",\n",
    "  fill_alpha = 0.2,\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"radar measurements\", \n",
    "  source = radar_source)\n",
    "\n",
    "\n",
    "p.cross(\n",
    "  'x', 'y', size = 5, \n",
    "  line_color = \"grey\",\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"radar measured velocity direction\",\n",
    "  source = radar_source)\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"739edc8d-97ae-44aa-9dff-c10cd42e98be\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"739edc8d-97ae-44aa-9dff-c10cd42e98be\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"739edc8d-97ae-44aa-9dff-c10cd42e98be\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '739edc8d-97ae-44aa-9dff-c10cd42e98be' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"69f0efb1-5c26-4c1c-9142-0ad7851235e1\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null},\"id\":\"66af9656-38cb-4a70-aac9-721d55d532d4\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"42683231-6fdf-48f0-bae4-e3f9253042ce\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"lidar measurements\"},\"renderers\":[{\"id\":\"84601070-78cf-443b-a49e-7e6dcee9f1e3\",\"type\":\"GlyphRenderer\"}]},\"id\":\"efb96d2f-d263-4938-bc17-754c9ecf5487\",\"type\":\"LegendItem\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"409b04ba-5cd9-4d6b-86a8-3a822c16f97d\",\"type\":\"HoverTool\"}]},\"id\":\"e5cfb335-e4ad-4fb7-98ee-f3cc46fa8e49\",\"type\":\"Toolbar\"},{\"attributes\":{\"items\":[{\"id\":\"efb96d2f-d263-4938-bc17-754c9ecf5487\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3d4fcbd5-7345-4c96-8358-91d29b6486d3\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":[0.0,1.559445,3.890927,6.863517,9.077331,11.57555,13.59209,16.64559,19.01058,21.33124,24.07871,26.60525,29.58639,31.9416,34.61568,37.14036,40.32853,42.76639,45.35721,48.15409,50.62278,53.72678,56.03223,58.6632,60.87224,63.38208,66.34029,68.26205,70.82748,72.89226,75.00209,77.12245,79.1089,80.80743,82.62158,84.17335,85.63776,86.94492,88.82267,89.49667,90.51327,91.71782,92.85989,93.46683,95.32289,95.50389,96.26405,97.52863,98.21047,99.03627,99.99686,101.2038,102.3868,103.0034,104.1144,105.5409,106.8312,108.0836,109.5344,111.063,112.9126,114.801,116.6871,118.9528,120.6951,123.5682,124.8938,127.8531,129.9473,132.0919,135.0735,137.5606,140.3314,142.8884,145.392,148.2509,150.6859,153.422,156.0466,158.9049,161.4116,163.6251,166.8278,169.0972,172.1752,174.643,177.0301,180.1454,182.5994,184.7319,186.9463,189.4652,191.7353,193.4712,195.9914,197.7246,199.2941,201.5491,202.9624,203.9906],\"y\":[0.0,-0.1385015,-0.1341657,0.4168175,0.5932112,1.6669,2.311915,2.902999,3.705553,4.732053,5.569675,6.96102,8.08789,9.880168,10.6988,12.08833,13.46661,14.82937,16.55239,17.28347,19.07211,19.89821,21.0923,21.78207,22.78765,23.4069,23.99586,24.35817,24.88439,24.71354,25.25945,24.92967,25.03687,24.86882,24.63932,24.55042,23.80798,23.52704,22.78691,22.30817,21.66767,21.11524,20.95372,20.21548,19.65849,19.6984,19.15973,18.72696,18.3739,17.35698,16.98822,16.53684,16.39923,15.35302,15.27083,14.44125,14.04819,13.6604,13.57136,12.58139,12.48773,12.55057,12.10355,12.00094,12.2918,12.8297,12.77429,13.32727,13.6963,14.50702,15.04748,16.2147,17.00802,17.99183,19.16167,20.47536,22.11423,23.49086,24.80844,26.03078,27.42561,28.76827,30.20623,31.37172,32.34041,33.46252,34.20094,35.14229,35.75303,36.51547,36.94045,37.40516,37.56307,37.27891,37.39908,37.72855,37.28617,36.99733,36.45683,36.1967]}},\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"ab11f232-6275-435f-aede-fec7ed801796\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"navy\"},\"line_color\":{\"value\":\"teal\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2b5f2e6a-dc5a-4416-93f4-5c6daed1ee7a\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"79c2680e-3a16-49c7-9f12-704dae763432\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2b5f2e6a-dc5a-4416-93f4-5c6daed1ee7a\",\"type\":\"Circle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"79c2680e-3a16-49c7-9f12-704dae763432\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"84601070-78cf-443b-a49e-7e6dcee9f1e3\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"ab11f232-6275-435f-aede-fec7ed801796\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5585cde8-5b00-4ded-b4a4-5c8545d9495c\",\"type\":\"BasicTicker\"}},\"id\":\"d742d69e-f580-4e2e-9c32-5abbedca226a\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"c0c7d29c-73dd-4095-b5f2-1c3c00e1a814\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"d742d69e-f580-4e2e-9c32-5abbedca226a\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"2aa6eb3c-d326-42e6-8edd-4d9da418406c\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"d742d69e-f580-4e2e-9c32-5abbedca226a\",\"type\":\"LinearAxis\"},{\"id\":\"7d6259aa-ae58-44e2-9adb-a28bde2bfaf5\",\"type\":\"Grid\"},{\"id\":\"2aa6eb3c-d326-42e6-8edd-4d9da418406c\",\"type\":\"LinearAxis\"},{\"id\":\"6ac64676-f05f-4355-ab01-09388cdc8ad4\",\"type\":\"Grid\"},{\"id\":\"3d4fcbd5-7345-4c96-8358-91d29b6486d3\",\"type\":\"Legend\"},{\"id\":\"84601070-78cf-443b-a49e-7e6dcee9f1e3\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"42683231-6fdf-48f0-bae4-e3f9253042ce\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"2715267a-692c-439a-920c-562ecfee0406\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"e5cfb335-e4ad-4fb7-98ee-f3cc46fa8e49\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"66af9656-38cb-4a70-aac9-721d55d532d4\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"c0c7d29c-73dd-4095-b5f2-1c3c00e1a814\",\"type\":\"DataRange1d\"}},\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"5585cde8-5b00-4ded-b4a4-5c8545d9495c\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"409b04ba-5cd9-4d6b-86a8-3a822c16f97d\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"e87063ce-1e6f-4284-b6ed-76eb0086e534\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"e87063ce-1e6f-4284-b6ed-76eb0086e534\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c31e1281-34f6-41c5-b085-85d92e08e366\",\"type\":\"BasicTicker\"}},\"id\":\"2aa6eb3c-d326-42e6-8edd-4d9da418406c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c31e1281-34f6-41c5-b085-85d92e08e366\",\"type\":\"BasicTicker\"}},\"id\":\"6ac64676-f05f-4355-ab01-09388cdc8ad4\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5585cde8-5b00-4ded-b4a4-5c8545d9495c\",\"type\":\"BasicTicker\"}},\"id\":\"7d6259aa-ae58-44e2-9adb-a28bde2bfaf5\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2715267a-692c-439a-920c-562ecfee0406\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"c31e1281-34f6-41c5-b085-85d92e08e366\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"f08f82eb-6fea-44f2-ba60-4b41b907b386\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"69f0efb1-5c26-4c1c-9142-0ad7851235e1\",\"elementid\":\"739edc8d-97ae-44aa-9dff-c10cd42e98be\",\"modelid\":\"f08f82eb-6fea-44f2-ba60-4b41b907b386\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"739edc8d-97ae-44aa-9dff-c10cd42e98be\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###################################################################\n",
    "#  LIDAR MEASUREMENTS\n",
    "###################################################################\n",
    "\n",
    "hover3 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover3])\n",
    "\n",
    "p.circle(\n",
    "  'x', 'y', size = 10, \n",
    "  fill_color = \"navy\",\n",
    "  line_color = \"teal\",\n",
    "  fill_alpha = 0.2,\n",
    "  line_width = 1, \n",
    "  legend = \"lidar measurements\", \n",
    "  source = lidar_source)\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"0a8601b2-e2ec-441c-9d13-7a9441ad0a34\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"0a8601b2-e2ec-441c-9d13-7a9441ad0a34\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"0a8601b2-e2ec-441c-9d13-7a9441ad0a34\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '0a8601b2-e2ec-441c-9d13-7a9441ad0a34' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"1ba2d8af-c453-4828-b316-653822d196f9\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"fb4f2955-ce02-48df-aa5a-f0b4e85314a7\",\"type\":\"ToolEvents\"},{\"attributes\":{\"data_source\":{\"id\":\"929b1e87-2f77-48f1-ad36-8aa56fb3613f\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f0ff7270-7ac5-4d2d-8b93-95a79b53f8d8\",\"type\":\"Cross\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"6869639c-2832-4d06-9a82-db8ffa0cba8e\",\"type\":\"Cross\"},\"selection_glyph\":null},\"id\":\"47ef6ebd-df00-4eef-b37d-1565de9b3950\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\",\"angle\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,0.696815978283902,0.7685060098418316,0.6996804897672233,0.8225150435774621,0.9296262986504897,0.9366316470839677,0.7867023251560407,0.8418073776429639,1.3273343616976747,1.3318593678332689,0.9034856327431862,0.8939618871698862,1.0220718947966478,1.0354850346551319,1.1604836303988115,1.1540643199398528,1.2445895733584325,1.2150006738185555,1.0087015594720723,1.0137092074016811,1.5048921843523497,1.4471285643778078,0.9922987466699431,0.9883704852306756,1.6873475657947425,1.669126395260868,0.7384850018912514,0.7525753699449359,1.6337622453388434,1.572659630615859,1.006160075235658,0.9891915753813298,1.473932692033683,1.4467107797412386,1.3338584604663455,1.3279416793272052,0.8385471331894372,0.8485862515963674,1.652025488389035,1.6791948161275583,0.7380413509800372,0.6708574992912159,1.6384508499097068,1.6227608909067583,0.7354764232951274,0.7365376034027269,1.5753668948188553,1.5139445680192138,0.7613075860964471,0.764143296439725,1.0846774822890655,1.0729038422972268,0.9120613618119476,0.9604435206759625,0.9891942605834341,0.9755250896404503,0.5201768636853072,0.5982009121685863,1.2993262967730703,1.3079754850242604,0.3308640738328864,0.28968057306610656,1.1993784701198662,1.215569671171579,0.38397502377256065,0.41594263818961974,0.7894296310599475,0.7557091011567829,0.7297212971895624,0.7292137844701637,0.05394713517999339,0.17769106940982227,0.9280827450550578,0.9459008309044189,0.25624880075196743,0.09366648355099594,1.4065514710305806,1.091820924878872,-0.05971443447873115,0.06258439859573717,0.5262289267061673,0.5324047697823948,0.6913095799921907,0.666535178291263,-0.7035010332097407,-0.11130056444216307,0.6667283776793053,0.37611998597435026,2.5958539940763368,1.6931176604223679,-0.22355689037701088,-0.11174925938755287,0.7855757010784429,0.7092092273769615,0.019334000684714137,0.25075887775923533,-0.2977974959740566,-0.12823263779896177,0.999860620505977,1.0006321415311308,0.23911908790968628,0.13203857299226462,1.0046474972357102,1.0240021597056015,-0.5530858465435649,-0.2582573206365397,1.4312759960418866,1.4683553913925702,0.0033395767879995653,-0.09642706932491873,1.1094857433120382,1.115591597667086,0.20453771070375815,0.28851406134175817,1.0225696099803379,1.0189516703261323,-0.027506899793424133,0.02652446776675743,1.231922224714574,1.2459864472028395,0.612580095610373,0.5919334536216891,0.5237788316484698,0.5611473355766181,0.834709749347585,0.8321421680412069,1.0596344535575846,1.0162158314804908,0.9552986648471347,0.9769958937413576,0.22187885545770025,0.6697454885654659,1.0856391128350182,1.1236105533557255,0.8186682810600489,0.8315389610637606,1.369411192291858,1.2814953928239485,0.8219136899528636,0.8080997601112848,1.4334050749449623,1.400958801705296,0.8479965806683548,0.8498176743351503,1.34001415638585,1.3085567599118257,1.174677449470387,1.150069021335803,1.2656275075506724,1.281481539048177,1.4370729661727966,1.3946452792921993,1.1678338006542845,1.173638946437131,1.2900531205456263,1.303530669650299,1.1240141965165718,1.1351477960733984,1.4145330128796667,1.3747763140625293,1.3326162259058714,1.2581076519685825,1.1917913464292722,1.2390937574512766,1.2659862777768176,1.218661148495083,1.0323261000292654,1.0422198028447514,1.3233278943935085,1.3095231303627437,0.9400886998150906,0.9413218127761399,1.1244693083353299,1.1750075036143377,0.933560526306626,0.9293291235679452,1.2446100905520978,1.245550088200503,0.8209602835951217,0.8291027575831981,1.041265634649923,1.0468882243740212,0.7401407620967928,0.7303560548746952,0.5050125230331817,0.6194035417491381,0.9148773077363384,0.8911225672193239,1.0298671460097824,1.0307597771911503,0.17033665275772403,0.27947898553236616,0.8192111439706602,0.75116030782064,0.29415021626753773,0.28305855730866836,0.8248670794876918,0.8744186108272728],\"x\":[0.0,0.0,1.5594099920430822,1.6283757614943988,3.8911894651459993,3.9658374320649896,6.855589855540933,6.689801578296302,9.081507398881168,9.093645828718525,11.5739364431016,11.525828548976445,13.59771419967775,13.689858369758673,16.634696015151118,16.480486364641454,19.016094091836436,19.08702292366205,21.33321531283293,21.42926464613217,24.076603095241246,24.185185704354186,26.613749416958893,26.66998160013781,29.578742533991772,29.52627909677591,31.950369748314326,31.93469643377233,34.60798069511845,34.69268294028068,37.15029587640378,37.26409191116504,40.31795280109724,40.186241059307044,42.77335620252378,42.79631682944031,45.356104938334575,45.40255066123385,48.15463908325148,48.150765476713,50.62546246266486,50.57711325664833,53.71388356077708,53.60069671703578,56.042956367975066,56.03289422955345,58.65505269574236,58.65436197154552,60.88370896486399,60.92256651910766,63.376442543984766,63.43722719467073,66.33709248029363,66.16921511597299,68.26698024449146,68.40919591498935,70.82620330060365,70.77126947044947,72.89541977131329,72.97920966322067,75.00441469192852,74.9813372151083,77.11921117307236,77.11212685291916,79.1096570329953,79.07458689862794,80.80830894375104,80.86430547722453,82.6212071999416,82.582737677333,84.17329605095145,84.18028145414613,85.640826362518,85.72454695337454,86.94943405250261,87.06111798525694,88.81397969697854,88.68730215103136,89.5100804869103,89.63510922354179,90.51019506188457,90.60232266792137,91.7196493486914,91.77621615400605,92.85884963938575,92.90835745740704,93.47546007512757,93.63181457168535,95.30817072090046,95.00942935118964,95.51525156726152,95.61291254611699,96.26178830432046,96.3218261900486,97.52372773492239,97.44386990003302,98.21522363569328,98.2756757683339,99.03675158785339,99.0747369123873,99.997837885922,100.0566614433987,101.19987267022799,101.15652602021991,102.38448033981312,102.276961812393,103.00898724467847,103.06458123784411,104.11246487681032,104.05820514581525,105.53503433149251,105.45040988949279,106.83216073966754,106.7760786977466,108.08384682101,108.12610984495936,109.53572279507019,109.51399305929814,111.06087143357706,111.14270521046882,112.91266259311845,112.89008056678388,114.79783616796061,114.78733810447739,116.68769104519986,116.74841885439064,118.95084456479988,118.92050619146042,120.70146819352813,120.81182802702044,123.55475738285247,123.35592810909696,124.91118893037127,125.20822133357063,127.84311960464106,127.7074692757764,129.95395210851757,130.07108014152698,132.09590706995002,132.22209603259185,135.0651269628721,134.9884229608165,137.56372681406168,137.61397572717428,140.33033648166648,140.34621789101053,142.8927984040178,142.8954776848523,145.3928061070692,145.49549371568406,148.25044876250698,148.22258678021768,150.68861582727547,150.7223755846748,153.4206914002384,153.40227356112882,156.04716768116728,156.02940387021735,158.898930601222,158.8844796486543,161.4188191041026,161.4843913966915,163.62956872559397,163.79726207277173,166.81851309681952,166.68929945304367,169.10453249427485,169.18946196159015,172.16665018470968,172.09033647109948,174.648941369694,174.6552463232327,177.0302305541257,177.0600371372939,180.13473666600748,179.90707330768052,182.59932854528878,182.5008055675052,184.7351015183446,184.7370809675618,186.94429607415984,187.01012968486526,189.46459417932672,189.45390729338064,191.73548450652206,191.70292334757943,193.47808430095847,193.5673692800336,195.98208405100988,195.78543436222498,197.72654966856956,197.69110082532217,199.29810977599456,199.3529727656875,201.5400484825339,201.33482303464604,202.9659940039983,202.93826377978604,203.99589861704834,204.04507030818206],\"y\":[0.0,0.0,-0.13849839078194803,0.01966928907115359,-0.13344195061754577,0.07271259409076539,0.41423789453561866,0.4344663582893769,0.5961543030919466,0.6673941169248875,1.6564892510592417,1.616266456679656,2.3211754708166965,2.2981766740572174,2.8982824635750086,2.871527955964281,3.7046433461484383,3.7244646900434937,4.731084259039649,4.75060796876329,5.5733705996172835,5.607558576745408,6.95384946562615,6.969146705561347,8.09602785869088,8.086489979058822,9.867136930673215,9.856289863608326,10.717782156035172,10.74674680825873,12.07211832540893,12.11177217518938,13.477084248346559,13.437443020806038,14.821094446349466,14.832476445474384,16.55469851277081,16.570174021953683,17.294363682408846,17.29577009732887,19.053380759182676,19.032610282251095,19.91839165098872,19.87788367680689,21.074466471937864,21.070922458872285,21.798701554709602,21.79975415432129,22.77529029184872,22.789989955620406,23.420048627968338,23.443750668320707,23.988271245472465,23.928245328264076,24.36190404455693,24.41293482300496,24.88358724851309,24.863561628312198,24.720787772667112,24.749963936738293,25.248587898120945,25.240377154067115,24.945359187579236,24.94475412187551,25.022084328283544,25.01060454407653,24.879785617765968,24.89666983703258,24.634245953719297,24.623544758743357,24.5507214179946,24.55195580981683,23.815912533130664,23.838479320852457,23.518316395066567,23.547956276857963,22.797306201208524,22.766217830175464,22.297953953949616,22.3295312109411,21.677472222637125,21.700399939419718,21.10918072036386,21.123196277312655,20.952536635604893,20.96382044210109,20.223289481121963,20.25710276948675,19.6527528028378,19.592793738418468,19.691658521951993,19.711719037025784,19.172581910725246,19.18349419808333,18.71820684884513,18.701558135911664,18.377039583903205,18.38762072850479,17.36373805988344,17.369852348443384,16.977225582927456,16.98694275251946,16.544046871010117,16.536906857733236,16.39078343322078,16.37237299423586,15.36788146285737,15.374646647798855,15.25207385959236,15.243093394146666,14.460086396077868,14.447885550935082,14.031892908568706,14.025119277938826,13.669701009493325,13.674895530864434,13.56313974450176,13.559681992074136,12.596315889149006,12.606192328998842,12.469159240389516,12.467337545512608,12.559159611543869,12.557630491805885,12.104434705231998,12.11055581949683,11.996644963514548,11.994314043705927,12.289742093334372,12.300853712356831,12.828444092997415,12.807668008558757,12.78097253854232,12.811217156002083,13.318288744682484,13.303765533807102,13.702623858433888,13.714994721893941,14.499261021945841,14.513091776351095,15.055468031321514,15.046490271107947,16.20210934751786,16.208572976809588,17.02005668400311,17.02261553929934,17.98295004208316,17.983739838733268,19.1649702652659,19.17873498729015,20.47244740910899,20.469055967167773,22.111842078259574,22.116717416418197,23.49587591175642,23.49243004906266,24.805973040352164,24.803353609204553,26.03277893741706,26.030475442648132,27.422425993862426,27.434054039943124,28.77163062916521,28.801656683767074,30.204096105397653,30.180037068070042,31.37439169419012,31.38967001325801,32.34205182668948,32.32794470500399,33.45865159716371,33.46030413563589,34.208083604536434,34.21353770045812,35.13540781925898,35.09111392419069,35.75802196954066,35.739173080169316,36.51078233628103,36.51089974405719,36.94713423581993,36.960092432867086,37.401205109782374,37.398735901583215,37.56820328370095,37.56154569897384,37.281187830993915,37.29835440962303,37.393749733996934,37.35637616722481,37.72689246493463,37.71988940408541,37.296630305479276,37.30678364701694,36.98968455104059,36.95244455931782,36.462033294054905,36.45752593953198,36.1910744584841,36.1998776953872]}},\"id\":\"929b1e87-2f77-48f1-ad36-8aa56fb3613f\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"teal\"},\"line_color\":{\"value\":\"white\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3b4f5e1c-d841-4159-b01e-ff7098632c0c\",\"type\":\"Triangle\"},{\"attributes\":{},\"id\":\"372e3c12-0b67-4d5e-953b-049595a0941a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"53161cf8-3f88-4725-ba22-c33f8d075a78\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"e1bf7595-cfed-4256-8574-77939b286d42\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c8e2cddc-9065-4ccc-ab0e-8817630c1718\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"formatter\":{\"id\":\"d3881c9f-bda3-41a7-a113-c9ef15c7396f\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"875e19b6-8e3e-497c-a071-0329b027286f\",\"type\":\"BasicTicker\"}},\"id\":\"5d022831-cb19-484f-bd6c-ead695c81ed8\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"851e5887-b2e5-42cb-99d8-62a8a9078738\",\"type\":\"Title\"},{\"attributes\":{\"items\":[{\"id\":\"fd971e9e-bb15-4b15-be77-8f82de37e84d\",\"type\":\"LegendItem\"},{\"id\":\"3caa9343-eabf-4905-a756-4f06e7251f77\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0b9645bf-e23d-4eea-9ac5-03711637be56\",\"type\":\"Legend\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"53161cf8-3f88-4725-ba22-c33f8d075a78\",\"type\":\"PanTool\"},{\"id\":\"17f07176-2282-4985-a04c-aa0925177848\",\"type\":\"WheelZoomTool\"},{\"id\":\"c8e2cddc-9065-4ccc-ab0e-8817630c1718\",\"type\":\"BoxZoomTool\"},{\"id\":\"bfd4c4c5-a407-49e0-a7c6-733f2a0d6fb8\",\"type\":\"SaveTool\"},{\"id\":\"3e4ee8e0-b643-4646-ba4b-d225c6b0d832\",\"type\":\"ResetTool\"},{\"id\":\"93b1690c-22d4-47e7-90cd-79a88e0aba73\",\"type\":\"HelpTool\"}]},\"id\":\"904f28e2-7dfa-4219-912f-c633fb8dc9ed\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"e1bf7595-cfed-4256-8574-77939b286d42\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"9d4b0e5f-938d-44e6-bb6e-b43d6a30f3cf\",\"type\":\"Triangle\"},{\"attributes\":{},\"id\":\"d3881c9f-bda3-41a7-a113-c9ef15c7396f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3e4ee8e0-b643-4646-ba4b-d225c6b0d832\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"372e3c12-0b67-4d5e-953b-049595a0941a\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"20a4fce8-34e8-4f31-9e2b-b7731b131359\",\"type\":\"BasicTicker\"}},\"id\":\"1ffc52de-5dac-4747-8dbb-770433122738\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"875e19b6-8e3e-497c-a071-0329b027286f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"state prediction: velocity direction\"},\"renderers\":[{\"id\":\"47ef6ebd-df00-4eef-b37d-1565de9b3950\",\"type\":\"GlyphRenderer\"}]},\"id\":\"3caa9343-eabf-4905-a756-4f06e7251f77\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"02b9231a-079e-4fba-9542-8ab3adb9d699\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"state prediction: location\"},\"renderers\":[{\"id\":\"54ac6c07-64d0-4733-b068-f7c225cf7e36\",\"type\":\"GlyphRenderer\"}]},\"id\":\"fd971e9e-bb15-4b15-be77-8f82de37e84d\",\"type\":\"LegendItem\"},{\"attributes\":{\"below\":[{\"id\":\"1ffc52de-5dac-4747-8dbb-770433122738\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"5d022831-cb19-484f-bd6c-ead695c81ed8\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"1ffc52de-5dac-4747-8dbb-770433122738\",\"type\":\"LinearAxis\"},{\"id\":\"f9efe5c0-b82b-4cab-a6fe-394cdecde53b\",\"type\":\"Grid\"},{\"id\":\"5d022831-cb19-484f-bd6c-ead695c81ed8\",\"type\":\"LinearAxis\"},{\"id\":\"154cd8d4-f597-4391-ad69-65f621076fab\",\"type\":\"Grid\"},{\"id\":\"e1bf7595-cfed-4256-8574-77939b286d42\",\"type\":\"BoxAnnotation\"},{\"id\":\"0b9645bf-e23d-4eea-9ac5-03711637be56\",\"type\":\"Legend\"},{\"id\":\"54ac6c07-64d0-4733-b068-f7c225cf7e36\",\"type\":\"GlyphRenderer\"},{\"id\":\"47ef6ebd-df00-4eef-b37d-1565de9b3950\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"851e5887-b2e5-42cb-99d8-62a8a9078738\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"fb4f2955-ce02-48df-aa5a-f0b4e85314a7\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"904f28e2-7dfa-4219-912f-c633fb8dc9ed\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"02b9231a-079e-4fba-9542-8ab3adb9d699\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"934e1058-e657-4758-b29d-64a7327b6a91\",\"type\":\"DataRange1d\"}},\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"bfd4c4c5-a407-49e0-a7c6-733f2a0d6fb8\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"934e1058-e657-4758-b29d-64a7327b6a91\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"93b1690c-22d4-47e7-90cd-79a88e0aba73\",\"type\":\"HelpTool\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"20a4fce8-34e8-4f31-9e2b-b7731b131359\",\"type\":\"BasicTicker\"}},\"id\":\"f9efe5c0-b82b-4cab-a6fe-394cdecde53b\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"17f07176-2282-4985-a04c-aa0925177848\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"20a4fce8-34e8-4f31-9e2b-b7731b131359\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"33adf2b7-c3b0-45be-9cb7-4ced9d603310\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3b4f5e1c-d841-4159-b01e-ff7098632c0c\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"9d4b0e5f-938d-44e6-bb6e-b43d6a30f3cf\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"54ac6c07-64d0-4733-b068-f7c225cf7e36\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\",\"angle\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,0.696815978283902,0.7685060098418316,0.6996804897672233,0.8225150435774621,0.9296262986504897,0.9366316470839677,0.7867023251560407,0.8418073776429639,1.3273343616976747,1.3318593678332689,0.9034856327431862,0.8939618871698862,1.0220718947966478,1.0354850346551319,1.1604836303988115,1.1540643199398528,1.2445895733584325,1.2150006738185555,1.0087015594720723,1.0137092074016811,1.5048921843523497,1.4471285643778078,0.9922987466699431,0.9883704852306756,1.6873475657947425,1.669126395260868,0.7384850018912514,0.7525753699449359,1.6337622453388434,1.572659630615859,1.006160075235658,0.9891915753813298,1.473932692033683,1.4467107797412386,1.3338584604663455,1.3279416793272052,0.8385471331894372,0.8485862515963674,1.652025488389035,1.6791948161275583,0.7380413509800372,0.6708574992912159,1.6384508499097068,1.6227608909067583,0.7354764232951274,0.7365376034027269,1.5753668948188553,1.5139445680192138,0.7613075860964471,0.764143296439725,1.0846774822890655,1.0729038422972268,0.9120613618119476,0.9604435206759625,0.9891942605834341,0.9755250896404503,0.5201768636853072,0.5982009121685863,1.2993262967730703,1.3079754850242604,0.3308640738328864,0.28968057306610656,1.1993784701198662,1.215569671171579,0.38397502377256065,0.41594263818961974,0.7894296310599475,0.7557091011567829,0.7297212971895624,0.7292137844701637,0.05394713517999339,0.17769106940982227,0.9280827450550578,0.9459008309044189,0.25624880075196743,0.09366648355099594,1.4065514710305806,1.091820924878872,-0.05971443447873115,0.06258439859573717,0.5262289267061673,0.5324047697823948,0.6913095799921907,0.666535178291263,-0.7035010332097407,-0.11130056444216307,0.6667283776793053,0.37611998597435026,2.5958539940763368,1.6931176604223679,-0.22355689037701088,-0.11174925938755287,0.7855757010784429,0.7092092273769615,0.019334000684714137,0.25075887775923533,-0.2977974959740566,-0.12823263779896177,0.999860620505977,1.0006321415311308,0.23911908790968628,0.13203857299226462,1.0046474972357102,1.0240021597056015,-0.5530858465435649,-0.2582573206365397,1.4312759960418866,1.4683553913925702,0.0033395767879995653,-0.09642706932491873,1.1094857433120382,1.115591597667086,0.20453771070375815,0.28851406134175817,1.0225696099803379,1.0189516703261323,-0.027506899793424133,0.02652446776675743,1.231922224714574,1.2459864472028395,0.612580095610373,0.5919334536216891,0.5237788316484698,0.5611473355766181,0.834709749347585,0.8321421680412069,1.0596344535575846,1.0162158314804908,0.9552986648471347,0.9769958937413576,0.22187885545770025,0.6697454885654659,1.0856391128350182,1.1236105533557255,0.8186682810600489,0.8315389610637606,1.369411192291858,1.2814953928239485,0.8219136899528636,0.8080997601112848,1.4334050749449623,1.400958801705296,0.8479965806683548,0.8498176743351503,1.34001415638585,1.3085567599118257,1.174677449470387,1.150069021335803,1.2656275075506724,1.281481539048177,1.4370729661727966,1.3946452792921993,1.1678338006542845,1.173638946437131,1.2900531205456263,1.303530669650299,1.1240141965165718,1.1351477960733984,1.4145330128796667,1.3747763140625293,1.3326162259058714,1.2581076519685825,1.1917913464292722,1.2390937574512766,1.2659862777768176,1.218661148495083,1.0323261000292654,1.0422198028447514,1.3233278943935085,1.3095231303627437,0.9400886998150906,0.9413218127761399,1.1244693083353299,1.1750075036143377,0.933560526306626,0.9293291235679452,1.2446100905520978,1.245550088200503,0.8209602835951217,0.8291027575831981,1.041265634649923,1.0468882243740212,0.7401407620967928,0.7303560548746952,0.5050125230331817,0.6194035417491381,0.9148773077363384,0.8911225672193239,1.0298671460097824,1.0307597771911503,0.17033665275772403,0.27947898553236616,0.8192111439706602,0.75116030782064,0.29415021626753773,0.28305855730866836,0.8248670794876918,0.8744186108272728],\"x\":[0.0,0.0,1.5594099920430822,1.6283757614943988,3.8911894651459993,3.9658374320649896,6.855589855540933,6.689801578296302,9.081507398881168,9.093645828718525,11.5739364431016,11.525828548976445,13.59771419967775,13.689858369758673,16.634696015151118,16.480486364641454,19.016094091836436,19.08702292366205,21.33321531283293,21.42926464613217,24.076603095241246,24.185185704354186,26.613749416958893,26.66998160013781,29.578742533991772,29.52627909677591,31.950369748314326,31.93469643377233,34.60798069511845,34.69268294028068,37.15029587640378,37.26409191116504,40.31795280109724,40.186241059307044,42.77335620252378,42.79631682944031,45.356104938334575,45.40255066123385,48.15463908325148,48.150765476713,50.62546246266486,50.57711325664833,53.71388356077708,53.60069671703578,56.042956367975066,56.03289422955345,58.65505269574236,58.65436197154552,60.88370896486399,60.92256651910766,63.376442543984766,63.43722719467073,66.33709248029363,66.16921511597299,68.26698024449146,68.40919591498935,70.82620330060365,70.77126947044947,72.89541977131329,72.97920966322067,75.00441469192852,74.9813372151083,77.11921117307236,77.11212685291916,79.1096570329953,79.07458689862794,80.80830894375104,80.86430547722453,82.6212071999416,82.582737677333,84.17329605095145,84.18028145414613,85.640826362518,85.72454695337454,86.94943405250261,87.06111798525694,88.81397969697854,88.68730215103136,89.5100804869103,89.63510922354179,90.51019506188457,90.60232266792137,91.7196493486914,91.77621615400605,92.85884963938575,92.90835745740704,93.47546007512757,93.63181457168535,95.30817072090046,95.00942935118964,95.51525156726152,95.61291254611699,96.26178830432046,96.3218261900486,97.52372773492239,97.44386990003302,98.21522363569328,98.2756757683339,99.03675158785339,99.0747369123873,99.997837885922,100.0566614433987,101.19987267022799,101.15652602021991,102.38448033981312,102.276961812393,103.00898724467847,103.06458123784411,104.11246487681032,104.05820514581525,105.53503433149251,105.45040988949279,106.83216073966754,106.7760786977466,108.08384682101,108.12610984495936,109.53572279507019,109.51399305929814,111.06087143357706,111.14270521046882,112.91266259311845,112.89008056678388,114.79783616796061,114.78733810447739,116.68769104519986,116.74841885439064,118.95084456479988,118.92050619146042,120.70146819352813,120.81182802702044,123.55475738285247,123.35592810909696,124.91118893037127,125.20822133357063,127.84311960464106,127.7074692757764,129.95395210851757,130.07108014152698,132.09590706995002,132.22209603259185,135.0651269628721,134.9884229608165,137.56372681406168,137.61397572717428,140.33033648166648,140.34621789101053,142.8927984040178,142.8954776848523,145.3928061070692,145.49549371568406,148.25044876250698,148.22258678021768,150.68861582727547,150.7223755846748,153.4206914002384,153.40227356112882,156.04716768116728,156.02940387021735,158.898930601222,158.8844796486543,161.4188191041026,161.4843913966915,163.62956872559397,163.79726207277173,166.81851309681952,166.68929945304367,169.10453249427485,169.18946196159015,172.16665018470968,172.09033647109948,174.648941369694,174.6552463232327,177.0302305541257,177.0600371372939,180.13473666600748,179.90707330768052,182.59932854528878,182.5008055675052,184.7351015183446,184.7370809675618,186.94429607415984,187.01012968486526,189.46459417932672,189.45390729338064,191.73548450652206,191.70292334757943,193.47808430095847,193.5673692800336,195.98208405100988,195.78543436222498,197.72654966856956,197.69110082532217,199.29810977599456,199.3529727656875,201.5400484825339,201.33482303464604,202.9659940039983,202.93826377978604,203.99589861704834,204.04507030818206],\"y\":[0.0,0.0,-0.13849839078194803,0.01966928907115359,-0.13344195061754577,0.07271259409076539,0.41423789453561866,0.4344663582893769,0.5961543030919466,0.6673941169248875,1.6564892510592417,1.616266456679656,2.3211754708166965,2.2981766740572174,2.8982824635750086,2.871527955964281,3.7046433461484383,3.7244646900434937,4.731084259039649,4.75060796876329,5.5733705996172835,5.607558576745408,6.95384946562615,6.969146705561347,8.09602785869088,8.086489979058822,9.867136930673215,9.856289863608326,10.717782156035172,10.74674680825873,12.07211832540893,12.11177217518938,13.477084248346559,13.437443020806038,14.821094446349466,14.832476445474384,16.55469851277081,16.570174021953683,17.294363682408846,17.29577009732887,19.053380759182676,19.032610282251095,19.91839165098872,19.87788367680689,21.074466471937864,21.070922458872285,21.798701554709602,21.79975415432129,22.77529029184872,22.789989955620406,23.420048627968338,23.443750668320707,23.988271245472465,23.928245328264076,24.36190404455693,24.41293482300496,24.88358724851309,24.863561628312198,24.720787772667112,24.749963936738293,25.248587898120945,25.240377154067115,24.945359187579236,24.94475412187551,25.022084328283544,25.01060454407653,24.879785617765968,24.89666983703258,24.634245953719297,24.623544758743357,24.5507214179946,24.55195580981683,23.815912533130664,23.838479320852457,23.518316395066567,23.547956276857963,22.797306201208524,22.766217830175464,22.297953953949616,22.3295312109411,21.677472222637125,21.700399939419718,21.10918072036386,21.123196277312655,20.952536635604893,20.96382044210109,20.223289481121963,20.25710276948675,19.6527528028378,19.592793738418468,19.691658521951993,19.711719037025784,19.172581910725246,19.18349419808333,18.71820684884513,18.701558135911664,18.377039583903205,18.38762072850479,17.36373805988344,17.369852348443384,16.977225582927456,16.98694275251946,16.544046871010117,16.536906857733236,16.39078343322078,16.37237299423586,15.36788146285737,15.374646647798855,15.25207385959236,15.243093394146666,14.460086396077868,14.447885550935082,14.031892908568706,14.025119277938826,13.669701009493325,13.674895530864434,13.56313974450176,13.559681992074136,12.596315889149006,12.606192328998842,12.469159240389516,12.467337545512608,12.559159611543869,12.557630491805885,12.104434705231998,12.11055581949683,11.996644963514548,11.994314043705927,12.289742093334372,12.300853712356831,12.828444092997415,12.807668008558757,12.78097253854232,12.811217156002083,13.318288744682484,13.303765533807102,13.702623858433888,13.714994721893941,14.499261021945841,14.513091776351095,15.055468031321514,15.046490271107947,16.20210934751786,16.208572976809588,17.02005668400311,17.02261553929934,17.98295004208316,17.983739838733268,19.1649702652659,19.17873498729015,20.47244740910899,20.469055967167773,22.111842078259574,22.116717416418197,23.49587591175642,23.49243004906266,24.805973040352164,24.803353609204553,26.03277893741706,26.030475442648132,27.422425993862426,27.434054039943124,28.77163062916521,28.801656683767074,30.204096105397653,30.180037068070042,31.37439169419012,31.38967001325801,32.34205182668948,32.32794470500399,33.45865159716371,33.46030413563589,34.208083604536434,34.21353770045812,35.13540781925898,35.09111392419069,35.75802196954066,35.739173080169316,36.51078233628103,36.51089974405719,36.94713423581993,36.960092432867086,37.401205109782374,37.398735901583215,37.56820328370095,37.56154569897384,37.281187830993915,37.29835440962303,37.393749733996934,37.35637616722481,37.72689246493463,37.71988940408541,37.296630305479276,37.30678364701694,36.98968455104059,36.95244455931782,36.462033294054905,36.45752593953198,36.1910744584841,36.1998776953872]}},\"id\":\"33adf2b7-c3b0-45be-9cb7-4ced9d603310\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"875e19b6-8e3e-497c-a071-0329b027286f\",\"type\":\"BasicTicker\"}},\"id\":\"154cd8d4-f597-4391-ad69-65f621076fab\",\"type\":\"Grid\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"grey\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f0ff7270-7ac5-4d2d-8b93-95a79b53f8d8\",\"type\":\"Cross\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6869639c-2832-4d06-9a82-db8ffa0cba8e\",\"type\":\"Cross\"}],\"root_ids\":[\"784cbbcc-e4f3-45c8-962c-509671447ca2\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"1ba2d8af-c453-4828-b316-653822d196f9\",\"elementid\":\"0a8601b2-e2ec-441c-9d13-7a9441ad0a34\",\"modelid\":\"784cbbcc-e4f3-45c8-962c-509671447ca2\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"0a8601b2-e2ec-441c-9d13-7a9441ad0a34\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###################################################################\n",
    "#  STATE WITH ORIENTATION\n",
    "###################################################################\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700)\n",
    "\n",
    "p.triangle(\n",
    "  state_xs, state_ys, size = 20, \n",
    "  fill_color = \"teal\",\n",
    "  line_color = \"white\",\n",
    "  fill_alpha = 0.2,\n",
    "  angle = state_angles, \n",
    "  line_width = 1, \n",
    "  legend = \"state prediction: location\")\n",
    "\n",
    "\n",
    "p.cross(\n",
    "  state_xs, state_ys, size = 5, \n",
    "  line_color = \"grey\",\n",
    "  angle = state_angles, \n",
    "  line_width = 1,\n",
    "  legend = \"state prediction: velocity direction\")\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"007d9d5f-d375-46b0-bc73-5d143c4d3657\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"007d9d5f-d375-46b0-bc73-5d143c4d3657\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"007d9d5f-d375-46b0-bc73-5d143c4d3657\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '007d9d5f-d375-46b0-bc73-5d143c4d3657' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"fd2b7e28-05e4-48db-b497-d629210cd055\":{\"roots\":{\"references\":[{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"line_color\":{\"value\":\"white\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0123d42e-a6e6-43eb-8394-aa37e384f202\",\"type\":\"Triangle\"},{\"attributes\":{\"formatter\":{\"id\":\"45d37201-ca47-4ef3-b694-7da24f044659\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7c392a3d-22da-4a71-88a5-5276a8d2897d\",\"type\":\"BasicTicker\"}},\"id\":\"57047523-7c9a-4f83-bbc3-1e429806da1e\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"7c392a3d-22da-4a71-88a5-5276a8d2897d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d95f9cf4-a411-427c-bfa0-032adb18d4c0\",\"type\":\"Cross\"},{\"attributes\":{\"label\":{\"value\":\"velocity direction\"},\"renderers\":[{\"id\":\"f650d605-8c32-42ae-9484-a6883f276fe9\",\"type\":\"GlyphRenderer\"}]},\"id\":\"38ff40d5-1ab7-4882-8815-73747865a46a\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"52dcee83-0053-426c-ac47-d3c32769e58d\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"aaf13327-de7d-4edd-bf29-61bebe45c18c\",\"type\":\"HoverTool\"}]},\"id\":\"7aa851d8-4ef0-45ca-b08a-059710b9b80d\",\"type\":\"Toolbar\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"36d04283-888a-48b3-8ce1-3ac5130b380e\",\"type\":\"Title\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"grey\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"17b7bd4b-7c08-4e2d-a0aa-9a4090de7785\",\"type\":\"Cross\"},{\"attributes\":{\"data_source\":{\"id\":\"cdf4833c-42d1-48ec-9fbb-f57752b43fd7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"0123d42e-a6e6-43eb-8394-aa37e384f202\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"d05feacb-b0cb-4443-90c9-b8bfd759e8b1\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"87599463-80b6-4d69-b9e0-a87a293d947d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"items\":[{\"id\":\"0d89522b-7113-4136-b305-f5b71033fd88\",\"type\":\"LegendItem\"},{\"id\":\"38ff40d5-1ab7-4882-8815-73747865a46a\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"5fafe693-58fc-4ead-a7ed-29670b4f8273\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null},\"id\":\"f23e4ebb-3fe2-4274-b836-9147768d027b\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966],\"x\":[0.0,0.0,2.098967,2.098967,4.291359,4.291359,6.569422,6.569422,8.924371,8.924371,11.34677,11.34677,13.82695,13.82695,16.35537,16.35537,18.92299,18.92299,21.52152,21.52152,24.14369,24.14369,26.78329,26.78329,29.43523,29.43523,32.09547,32.09547,34.76081,34.76081,37.42874,37.42874,40.09711,40.09711,42.76381,42.76381,45.42651,45.42651,48.08234,48.08234,50.72763,50.72763,53.35773,53.35773,55.96692,55.96692,58.54835,58.54835,61.09413,61.09413,63.59551,63.59551,66.04312,66.04312,68.4273,68.4273,70.73845,70.73845,72.96749,72.96749,75.10617,75.10617,77.14752,77.14752,79.0861,79.0861,80.91825,80.91825,82.64225,82.64225,84.25837,84.25837,85.7688,85.7688,87.1776,87.1776,88.49045,88.49045,89.71448,89.71448,90.85799,90.85799,91.93022,91.93022,92.94111,92.94111,93.90109,93.90109,94.82094,94.82094,95.71161,95.71161,96.58418,96.58418,97.44996,97.44996,98.31977,98.31977,99.20492,99.20492,100.1165,100.1165,101.0655,101.0655,102.0628,102.0628,103.1189,103.1189,104.2439,104.2439,105.4471,105.4471,106.7373,106.7373,108.1217,108.1217,109.6065,109.6065,111.1961,111.1961,112.8933,112.8933,114.6988,114.6988,116.6112,116.6112,118.6276,118.6276,120.7427,120.7427,122.9501,122.9501,125.2417,125.2417,127.6087,127.6087,130.0415,130.0415,132.5304,132.5304,135.066,135.066,137.6394,137.6394,140.2424,140.2424,142.8679,142.8679,145.5099,145.5099,148.1635,148.1635,150.8248,150.8248,153.4907,153.4907,156.1589,156.1589,158.8271,158.8271,161.4933,161.4933,164.1551,164.1551,166.8094,166.8094,169.4525,169.4525,172.0795,172.0795,174.6846,174.6846,177.2606,177.2606,179.7995,179.7995,182.2925,182.2925,184.7302,184.7302,187.1027,187.1027,189.4007,189.4007,191.6151,191.6151,193.7378,193.7378,195.7622,195.7622,197.6831,197.6831,199.4972,199.4972,201.2029,201.2029,202.8011,202.8011,204.2941,204.2941],\"y\":[0.0,0.0,0.0522228,0.0522228,0.2153118,0.2153118,0.4960956,0.4960956,0.8992403,0.8992403,1.426997,1.426997,2.079045,2.079045,2.852433,2.852433,3.74161,3.74161,4.738551,4.738551,5.832949,5.832949,7.012457,7.012457,8.262985,8.262985,9.569013,9.569013,10.91392,10.91392,12.28034,12.28034,13.65048,13.65048,15.00648,15.00648,16.33075,16.33075,17.60632,17.60632,18.81717,18.81717,19.94857,19.94857,20.98742,20.98742,21.92253,21.92253,22.7449,22.7449,23.44793,23.44793,24.02757,24.02757,24.48242,24.48242,24.81366,24.81366,25.02499,25.02499,25.12237,25.12237,25.11374,25.11374,25.00864,25.00864,24.81776,24.81776,24.5525,24.5525,24.22449,24.22449,23.84512,23.84512,23.42518,23.42518,22.97451,22.97451,22.50173,22.50173,22.01409,22.01409,21.51741,21.51741,21.01603,21.01603,20.51295,20.51295,20.00996,20.00996,19.50782,19.50782,19.00655,19.00655,18.50597,18.50597,18.00486,18.00486,17.50296,17.50296,17.00014,17.00014,16.49696,16.49696,15.99493,15.99493,15.49673,15.49673,15.00637,15.00637,14.52929,14.52929,14.07238,14.07238,13.64396,13.64396,13.25356,13.25356,12.91178,12.91178,12.62989,12.62989,12.4195,12.4195,12.29211,12.29211,12.25864,12.25864,12.32894,12.32894,12.5114,12.5114,12.8125,12.8125,13.23651,13.23651,13.78526,13.78526,14.45798,14.45798,15.2513,15.2513,16.15922,16.15922,17.17333,17.17333,18.28295,18.28295,19.47543,19.47543,20.73641,20.73641,22.05016,22.05016,23.39992,23.39992,24.76822,24.76822,26.13723,26.13723,27.48911,27.48911,28.80636,28.80636,30.07213,30.07213,31.27061,31.27061,32.38732,32.38732,33.40945,33.40945,34.32617,34.32617,35.12887,35.12887,35.81136,35.81136,36.37004,36.37004,36.80395,36.80395,37.11471,37.11471,37.3064,37.3064,37.38535,37.38535,37.3598,37.3598,37.2395,37.2395,37.03531,37.03531,36.75869,36.75869,36.42125,36.42125,36.03433,36.03433]}},\"id\":\"cdf4833c-42d1-48ec-9fbb-f57752b43fd7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"678b2560-ecb3-41aa-9893-a4b447dd120a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"abcd1041-7a9d-4f49-8256-8c79f8dc6073\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"57047523-7c9a-4f83-bbc3-1e429806da1e\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"abcd1041-7a9d-4f49-8256-8c79f8dc6073\",\"type\":\"LinearAxis\"},{\"id\":\"1c47320d-212f-4727-9b4b-56932c1cbab5\",\"type\":\"Grid\"},{\"id\":\"57047523-7c9a-4f83-bbc3-1e429806da1e\",\"type\":\"LinearAxis\"},{\"id\":\"4ea273f8-a64d-4e5e-9dd7-8556952e30b8\",\"type\":\"Grid\"},{\"id\":\"5fafe693-58fc-4ead-a7ed-29670b4f8273\",\"type\":\"Legend\"},{\"id\":\"87599463-80b6-4d69-b9e0-a87a293d947d\",\"type\":\"GlyphRenderer\"},{\"id\":\"f650d605-8c32-42ae-9484-a6883f276fe9\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"36d04283-888a-48b3-8ce1-3ac5130b380e\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"52dcee83-0053-426c-ac47-d3c32769e58d\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"7aa851d8-4ef0-45ca-b08a-059710b9b80d\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"f23e4ebb-3fe2-4274-b836-9147768d027b\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"8fda6030-b7a7-4337-971d-7edab381ac93\",\"type\":\"DataRange1d\"}},\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"aaf13327-de7d-4edd-bf29-61bebe45c18c\",\"type\":\"HoverTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7c392a3d-22da-4a71-88a5-5276a8d2897d\",\"type\":\"BasicTicker\"}},\"id\":\"4ea273f8-a64d-4e5e-9dd7-8556952e30b8\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"fc1e09b4-05ae-4647-af4b-998ad0bec27d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"45d37201-ca47-4ef3-b694-7da24f044659\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"8fda6030-b7a7-4337-971d-7edab381ac93\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"cdf4833c-42d1-48ec-9fbb-f57752b43fd7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"17b7bd4b-7c08-4e2d-a0aa-9a4090de7785\",\"type\":\"Cross\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"d95f9cf4-a411-427c-bfa0-032adb18d4c0\",\"type\":\"Cross\"},\"selection_glyph\":null},\"id\":\"f650d605-8c32-42ae-9484-a6883f276fe9\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"fc1e09b4-05ae-4647-af4b-998ad0bec27d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"678b2560-ecb3-41aa-9893-a4b447dd120a\",\"type\":\"BasicTicker\"}},\"id\":\"abcd1041-7a9d-4f49-8256-8c79f8dc6073\",\"type\":\"LinearAxis\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d05feacb-b0cb-4443-90c9-b8bfd759e8b1\",\"type\":\"Triangle\"},{\"attributes\":{\"plot\":{\"id\":\"c3803173-021e-4282-b2d0-1d95ed80837f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"678b2560-ecb3-41aa-9893-a4b447dd120a\",\"type\":\"BasicTicker\"}},\"id\":\"1c47320d-212f-4727-9b4b-56932c1cbab5\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"ground truth\"},\"renderers\":[{\"id\":\"87599463-80b6-4d69-b9e0-a87a293d947d\",\"type\":\"GlyphRenderer\"}]},\"id\":\"0d89522b-7113-4136-b305-f5b71033fd88\",\"type\":\"LegendItem\"}],\"root_ids\":[\"c3803173-021e-4282-b2d0-1d95ed80837f\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"fd2b7e28-05e4-48db-b497-d629210cd055\",\"elementid\":\"007d9d5f-d375-46b0-bc73-5d143c4d3657\",\"modelid\":\"c3803173-021e-4282-b2d0-1d95ed80837f\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"007d9d5f-d375-46b0-bc73-5d143c4d3657\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###################################################################\n",
    "#  GROUND TRUTH WITH ORIENTATION\n",
    "###################################################################\n",
    "\n",
    "hover4 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover4])\n",
    "\n",
    "p.triangle(\n",
    "  'x', 'y', size = 15, \n",
    "  fill_color = \"red\",\n",
    "  line_color = \"white\",\n",
    "  fill_alpha = 0.2,\n",
    "  angle = 'angle', \n",
    "  line_width = 1,\n",
    "  legend = \"ground truth\",\n",
    "  source = truth_source)\n",
    "\n",
    "\n",
    "p.cross(\n",
    "  'x', 'y', size = 5, \n",
    "  line_color = \"grey\",\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"velocity direction\", \n",
    "  source = truth_source)\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"6eac6875-91b8-468f-95dd-01f165df1866\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"6eac6875-91b8-468f-95dd-01f165df1866\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"6eac6875-91b8-468f-95dd-01f165df1866\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6eac6875-91b8-468f-95dd-01f165df1866' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"9eb2a07f-57b3-4052-b545-e7c379f2db45\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"4f1fcf86-f657-470d-ac43-5226378dc0a7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"12e91b8a-0d3e-4e0f-8827-bedde9268b9d\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"717c3053-e384-41dd-9710-b57f91ff4ff2\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"94b34af4-d515-499c-9ea0-17ef5d01cae5\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"2081111b-0515-4723-a30b-ec82f24716c8\",\"type\":\"DataRange1d\"},{\"attributes\":{\"items\":[{\"id\":\"30d81180-19df-4cbb-98e5-92a1d3508c5c\",\"type\":\"LegendItem\"},{\"id\":\"fb247168-4f75-4b31-a44f-b9d6ca1a09d7\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c2527899-7255-4ced-8be4-ec3095ac7345\",\"type\":\"Legend\"},{\"attributes\":{\"label\":{\"value\":\"state prediction: location\"},\"renderers\":[{\"id\":\"94b34af4-d515-499c-9ea0-17ef5d01cae5\",\"type\":\"GlyphRenderer\"}]},\"id\":\"30d81180-19df-4cbb-98e5-92a1d3508c5c\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"06026b34-f281-4051-be64-9c2c6c1fa656\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"fc71b6ea-ad00-47c7-9285-94c082ead55a\",\"type\":\"HoverTool\"},{\"attributes\":{\"data_source\":{\"id\":\"4f1fcf86-f657-470d-ac43-5226378dc0a7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f8f1db79-999b-49ae-8f94-ed2467867f8d\",\"type\":\"X\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"be744bd2-1652-4786-a809-3cfb63ca2814\",\"type\":\"X\"},\"selection_glyph\":null},\"id\":\"7037fd13-8b1d-49a8-929c-f45c1d468853\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ff50672d-f64f-4fad-9d99-f5636ce2f021\",\"type\":\"BasicTicker\"}},\"id\":\"412d2c73-46ea-4d14-8444-ee5c8b35f4c0\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"ff50672d-f64f-4fad-9d99-f5636ce2f021\",\"type\":\"BasicTicker\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"teal\"},\"line_color\":{\"value\":\"white\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"12e91b8a-0d3e-4e0f-8827-bedde9268b9d\",\"type\":\"Triangle\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"c44495ba-760f-45df-aaf5-45bc41a78498\",\"type\":\"Title\"},{\"attributes\":{\"below\":[{\"id\":\"51a781eb-51e9-42b0-be0e-3cdfc51be9da\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"67982b53-5d13-496f-a0df-c21da20a4e52\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"51a781eb-51e9-42b0-be0e-3cdfc51be9da\",\"type\":\"LinearAxis\"},{\"id\":\"412d2c73-46ea-4d14-8444-ee5c8b35f4c0\",\"type\":\"Grid\"},{\"id\":\"67982b53-5d13-496f-a0df-c21da20a4e52\",\"type\":\"LinearAxis\"},{\"id\":\"fc86a0c5-f493-4e4c-816b-238786295bf4\",\"type\":\"Grid\"},{\"id\":\"c2527899-7255-4ced-8be4-ec3095ac7345\",\"type\":\"Legend\"},{\"id\":\"94b34af4-d515-499c-9ea0-17ef5d01cae5\",\"type\":\"GlyphRenderer\"},{\"id\":\"7037fd13-8b1d-49a8-929c-f45c1d468853\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"c44495ba-760f-45df-aaf5-45bc41a78498\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"85c654c6-fa32-42d8-a6c0-0623e7b34979\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"38d40d3c-c564-45f5-b821-d9de1fcde482\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"2081111b-0515-4723-a30b-ec82f24716c8\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"de297a48-4f03-498c-b1ca-e2b4b9d0c062\",\"type\":\"DataRange1d\"}},\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"fc71b6ea-ad00-47c7-9285-94c082ead55a\",\"type\":\"HoverTool\"}]},\"id\":\"38d40d3c-c564-45f5-b821-d9de1fcde482\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966],\"x\":[0.0,0.0,1.5594099920430822,1.6283757614943988,3.8911894651459993,3.9658374320649896,6.855589855540933,6.689801578296302,9.081507398881168,9.093645828718525,11.5739364431016,11.525828548976445,13.59771419967775,13.689858369758673,16.634696015151118,16.480486364641454,19.016094091836436,19.08702292366205,21.33321531283293,21.42926464613217,24.076603095241246,24.185185704354186,26.613749416958893,26.66998160013781,29.578742533991772,29.52627909677591,31.950369748314326,31.93469643377233,34.60798069511845,34.69268294028068,37.15029587640378,37.26409191116504,40.31795280109724,40.186241059307044,42.77335620252378,42.79631682944031,45.356104938334575,45.40255066123385,48.15463908325148,48.150765476713,50.62546246266486,50.57711325664833,53.71388356077708,53.60069671703578,56.042956367975066,56.03289422955345,58.65505269574236,58.65436197154552,60.88370896486399,60.92256651910766,63.376442543984766,63.43722719467073,66.33709248029363,66.16921511597299,68.26698024449146,68.40919591498935,70.82620330060365,70.77126947044947,72.89541977131329,72.97920966322067,75.00441469192852,74.9813372151083,77.11921117307236,77.11212685291916,79.1096570329953,79.07458689862794,80.80830894375104,80.86430547722453,82.6212071999416,82.582737677333,84.17329605095145,84.18028145414613,85.640826362518,85.72454695337454,86.94943405250261,87.06111798525694,88.81397969697854,88.68730215103136,89.5100804869103,89.63510922354179,90.51019506188457,90.60232266792137,91.7196493486914,91.77621615400605,92.85884963938575,92.90835745740704,93.47546007512757,93.63181457168535,95.30817072090046,95.00942935118964,95.51525156726152,95.61291254611699,96.26178830432046,96.3218261900486,97.52372773492239,97.44386990003302,98.21522363569328,98.2756757683339,99.03675158785339,99.0747369123873,99.997837885922,100.0566614433987,101.19987267022799,101.15652602021991,102.38448033981312,102.276961812393,103.00898724467847,103.06458123784411,104.11246487681032,104.05820514581525,105.53503433149251,105.45040988949279,106.83216073966754,106.7760786977466,108.08384682101,108.12610984495936,109.53572279507019,109.51399305929814,111.06087143357706,111.14270521046882,112.91266259311845,112.89008056678388,114.79783616796061,114.78733810447739,116.68769104519986,116.74841885439064,118.95084456479988,118.92050619146042,120.70146819352813,120.81182802702044,123.55475738285247,123.35592810909696,124.91118893037127,125.20822133357063,127.84311960464106,127.7074692757764,129.95395210851757,130.07108014152698,132.09590706995002,132.22209603259185,135.0651269628721,134.9884229608165,137.56372681406168,137.61397572717428,140.33033648166648,140.34621789101053,142.8927984040178,142.8954776848523,145.3928061070692,145.49549371568406,148.25044876250698,148.22258678021768,150.68861582727547,150.7223755846748,153.4206914002384,153.40227356112882,156.04716768116728,156.02940387021735,158.898930601222,158.8844796486543,161.4188191041026,161.4843913966915,163.62956872559397,163.79726207277173,166.81851309681952,166.68929945304367,169.10453249427485,169.18946196159015,172.16665018470968,172.09033647109948,174.648941369694,174.6552463232327,177.0302305541257,177.0600371372939,180.13473666600748,179.90707330768052,182.59932854528878,182.5008055675052,184.7351015183446,184.7370809675618,186.94429607415984,187.01012968486526,189.46459417932672,189.45390729338064,191.73548450652206,191.70292334757943,193.47808430095847,193.5673692800336,195.98208405100988,195.78543436222498,197.72654966856956,197.69110082532217,199.29810977599456,199.3529727656875,201.5400484825339,201.33482303464604,202.9659940039983,202.93826377978604,203.99589861704834,204.04507030818206],\"y\":[0.0,0.0,-0.13849839078194803,0.01966928907115359,-0.13344195061754577,0.07271259409076539,0.41423789453561866,0.4344663582893769,0.5961543030919466,0.6673941169248875,1.6564892510592417,1.616266456679656,2.3211754708166965,2.2981766740572174,2.8982824635750086,2.871527955964281,3.7046433461484383,3.7244646900434937,4.731084259039649,4.75060796876329,5.5733705996172835,5.607558576745408,6.95384946562615,6.969146705561347,8.09602785869088,8.086489979058822,9.867136930673215,9.856289863608326,10.717782156035172,10.74674680825873,12.07211832540893,12.11177217518938,13.477084248346559,13.437443020806038,14.821094446349466,14.832476445474384,16.55469851277081,16.570174021953683,17.294363682408846,17.29577009732887,19.053380759182676,19.032610282251095,19.91839165098872,19.87788367680689,21.074466471937864,21.070922458872285,21.798701554709602,21.79975415432129,22.77529029184872,22.789989955620406,23.420048627968338,23.443750668320707,23.988271245472465,23.928245328264076,24.36190404455693,24.41293482300496,24.88358724851309,24.863561628312198,24.720787772667112,24.749963936738293,25.248587898120945,25.240377154067115,24.945359187579236,24.94475412187551,25.022084328283544,25.01060454407653,24.879785617765968,24.89666983703258,24.634245953719297,24.623544758743357,24.5507214179946,24.55195580981683,23.815912533130664,23.838479320852457,23.518316395066567,23.547956276857963,22.797306201208524,22.766217830175464,22.297953953949616,22.3295312109411,21.677472222637125,21.700399939419718,21.10918072036386,21.123196277312655,20.952536635604893,20.96382044210109,20.223289481121963,20.25710276948675,19.6527528028378,19.592793738418468,19.691658521951993,19.711719037025784,19.172581910725246,19.18349419808333,18.71820684884513,18.701558135911664,18.377039583903205,18.38762072850479,17.36373805988344,17.369852348443384,16.977225582927456,16.98694275251946,16.544046871010117,16.536906857733236,16.39078343322078,16.37237299423586,15.36788146285737,15.374646647798855,15.25207385959236,15.243093394146666,14.460086396077868,14.447885550935082,14.031892908568706,14.025119277938826,13.669701009493325,13.674895530864434,13.56313974450176,13.559681992074136,12.596315889149006,12.606192328998842,12.469159240389516,12.467337545512608,12.559159611543869,12.557630491805885,12.104434705231998,12.11055581949683,11.996644963514548,11.994314043705927,12.289742093334372,12.300853712356831,12.828444092997415,12.807668008558757,12.78097253854232,12.811217156002083,13.318288744682484,13.303765533807102,13.702623858433888,13.714994721893941,14.499261021945841,14.513091776351095,15.055468031321514,15.046490271107947,16.20210934751786,16.208572976809588,17.02005668400311,17.02261553929934,17.98295004208316,17.983739838733268,19.1649702652659,19.17873498729015,20.47244740910899,20.469055967167773,22.111842078259574,22.116717416418197,23.49587591175642,23.49243004906266,24.805973040352164,24.803353609204553,26.03277893741706,26.030475442648132,27.422425993862426,27.434054039943124,28.77163062916521,28.801656683767074,30.204096105397653,30.180037068070042,31.37439169419012,31.38967001325801,32.34205182668948,32.32794470500399,33.45865159716371,33.46030413563589,34.208083604536434,34.21353770045812,35.13540781925898,35.09111392419069,35.75802196954066,35.739173080169316,36.51078233628103,36.51089974405719,36.94713423581993,36.960092432867086,37.401205109782374,37.398735901583215,37.56820328370095,37.56154569897384,37.281187830993915,37.29835440962303,37.393749733996934,37.35637616722481,37.72689246493463,37.71988940408541,37.296630305479276,37.30678364701694,36.98968455104059,36.95244455931782,36.462033294054905,36.45752593953198,36.1910744584841,36.1998776953872]}},\"id\":\"4f1fcf86-f657-470d-ac43-5226378dc0a7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"85c654c6-fa32-42d8-a6c0-0623e7b34979\",\"type\":\"ToolEvents\"},{\"attributes\":{\"label\":{\"value\":\"state prediction: velocity directions\"},\"renderers\":[{\"id\":\"7037fd13-8b1d-49a8-929c-f45c1d468853\",\"type\":\"GlyphRenderer\"}]},\"id\":\"fb247168-4f75-4b31-a44f-b9d6ca1a09d7\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"7345b46b-4a66-4975-b72a-5e943dcb24fb\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"be744bd2-1652-4786-a809-3cfb63ca2814\",\"type\":\"X\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"06026b34-f281-4051-be64-9c2c6c1fa656\",\"type\":\"BasicTicker\"}},\"id\":\"fc86a0c5-f493-4e4c-816b-238786295bf4\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"74d7a787-e00e-4067-80b2-4f3b4498b8ca\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"de297a48-4f03-498c-b1ca-e2b4b9d0c062\",\"type\":\"DataRange1d\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"717c3053-e384-41dd-9710-b57f91ff4ff2\",\"type\":\"Triangle\"},{\"attributes\":{\"formatter\":{\"id\":\"74d7a787-e00e-4067-80b2-4f3b4498b8ca\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"06026b34-f281-4051-be64-9c2c6c1fa656\",\"type\":\"BasicTicker\"}},\"id\":\"67982b53-5d13-496f-a0df-c21da20a4e52\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"7345b46b-4a66-4975-b72a-5e943dcb24fb\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"ff50672d-f64f-4fad-9d99-f5636ce2f021\",\"type\":\"BasicTicker\"}},\"id\":\"51a781eb-51e9-42b0-be0e-3cdfc51be9da\",\"type\":\"LinearAxis\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"grey\"},\"size\":{\"units\":\"screen\",\"value\":5},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f8f1db79-999b-49ae-8f94-ed2467867f8d\",\"type\":\"X\"}],\"root_ids\":[\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"9eb2a07f-57b3-4052-b545-e7c379f2db45\",\"elementid\":\"6eac6875-91b8-468f-95dd-01f165df1866\",\"modelid\":\"0353581a-6a0f-4c36-8eea-eba4fc8a5a0c\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"6eac6875-91b8-468f-95dd-01f165df1866\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###################################################################\n",
    "#  STATE WITH ORIENTATION\n",
    "###################################################################\n",
    "\n",
    "hover5 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover5])\n",
    "\n",
    "p.triangle(\n",
    "  'x', 'y', size = 20, \n",
    "  fill_color = \"teal\",\n",
    "  line_color = \"white\",\n",
    "  fill_alpha = 0.2,\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"state prediction: location\", \n",
    "  source = state_source)\n",
    "\n",
    "\n",
    "p.x(\n",
    "  'x', 'y', size = 5, \n",
    "  line_color = \"grey\",\n",
    "  angle = 'angle', \n",
    "  line_width = 1,\n",
    "  legend = \"state prediction: velocity directions\",\n",
    "  source = state_source)\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"1e850bc5-b65b-46b3-85a1-92fbeffc55c7\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"1e850bc5-b65b-46b3-85a1-92fbeffc55c7\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"1e850bc5-b65b-46b3-85a1-92fbeffc55c7\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid '1e850bc5-b65b-46b3-85a1-92fbeffc55c7' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"b0ce5488-c9d3-46e3-b1cb-84e392cc65f7\":{\"roots\":{\"references\":[{\"attributes\":{\"items\":[{\"id\":\"93c758f4-a97b-477a-9cb8-efc48a8edfc2\",\"type\":\"LegendItem\"},{\"id\":\"5ce4bee4-edb6-4ae1-aae7-f278b077b0bd\",\"type\":\"LegendItem\"},{\"id\":\"9525cc8d-e647-4f6b-a7ce-21294a11db46\",\"type\":\"LegendItem\"},{\"id\":\"ed4c6673-04c7-4c04-bb2c-dfce1014617a\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"390bd6cc-d624-4652-b5a5-311e517c8fd7\",\"type\":\"Legend\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2004d8a5-bfd6-440e-928a-d3c22863857d\",\"type\":\"BasicTicker\"}},\"id\":\"76d311dd-cb5e-417a-925f-dc6ce1a31589\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1062fd31-27bb-4e04-8fba-90bac18a20bb\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":[0.0,1.559445,3.890927,6.863517,9.077331,11.57555,13.59209,16.64559,19.01058,21.33124,24.07871,26.60525,29.58639,31.9416,34.61568,37.14036,40.32853,42.76639,45.35721,48.15409,50.62278,53.72678,56.03223,58.6632,60.87224,63.38208,66.34029,68.26205,70.82748,72.89226,75.00209,77.12245,79.1089,80.80743,82.62158,84.17335,85.63776,86.94492,88.82267,89.49667,90.51327,91.71782,92.85989,93.46683,95.32289,95.50389,96.26405,97.52863,98.21047,99.03627,99.99686,101.2038,102.3868,103.0034,104.1144,105.5409,106.8312,108.0836,109.5344,111.063,112.9126,114.801,116.6871,118.9528,120.6951,123.5682,124.8938,127.8531,129.9473,132.0919,135.0735,137.5606,140.3314,142.8884,145.392,148.2509,150.6859,153.422,156.0466,158.9049,161.4116,163.6251,166.8278,169.0972,172.1752,174.643,177.0301,180.1454,182.5994,184.7319,186.9463,189.4652,191.7353,193.4712,195.9914,197.7246,199.2941,201.5491,202.9624,203.9906],\"y\":[0.0,-0.1385015,-0.1341657,0.4168175,0.5932112,1.6669,2.311915,2.902999,3.705553,4.732053,5.569675,6.96102,8.08789,9.880168,10.6988,12.08833,13.46661,14.82937,16.55239,17.28347,19.07211,19.89821,21.0923,21.78207,22.78765,23.4069,23.99586,24.35817,24.88439,24.71354,25.25945,24.92967,25.03687,24.86882,24.63932,24.55042,23.80798,23.52704,22.78691,22.30817,21.66767,21.11524,20.95372,20.21548,19.65849,19.6984,19.15973,18.72696,18.3739,17.35698,16.98822,16.53684,16.39923,15.35302,15.27083,14.44125,14.04819,13.6604,13.57136,12.58139,12.48773,12.55057,12.10355,12.00094,12.2918,12.8297,12.77429,13.32727,13.6963,14.50702,15.04748,16.2147,17.00802,17.99183,19.16167,20.47536,22.11423,23.49086,24.80844,26.03078,27.42561,28.76827,30.20623,31.37172,32.34041,33.46252,34.20094,35.14229,35.75303,36.51547,36.94045,37.40516,37.56307,37.27891,37.39908,37.72855,37.28617,36.99733,36.45683,36.1967]}},\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"formatter\":{\"id\":\"1062fd31-27bb-4e04-8fba-90bac18a20bb\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"adbfdc3d-b15a-4864-8bb0-8726f4f9d37f\",\"type\":\"BasicTicker\"}},\"id\":\"5484fc0f-b1f8-429f-86cd-324967756a64\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"7b8bdee8-0da0-4203-b819-14d24ccf9cc9\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"state predictions\"},\"renderers\":[{\"id\":\"ae50878e-7f26-4e01-812a-dcf9ab35316b\",\"type\":\"GlyphRenderer\"}]},\"id\":\"ed4c6673-04c7-4c04-bb2c-dfce1014617a\",\"type\":\"LegendItem\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":0.5},\"size\":{\"units\":\"screen\",\"value\":7},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"9937c409-97da-4eb2-a489-edef7741fba9\",\"type\":\"Triangle\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"557d3a8d-cec5-4d5c-b441-079850553981\",\"type\":\"HoverTool\"}]},\"id\":\"37969c17-36c7-40c0-92d3-a83c0921fa0f\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"adbfdc3d-b15a-4864-8bb0-8726f4f9d37f\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"adbfdc3d-b15a-4864-8bb0-8726f4f9d37f\",\"type\":\"BasicTicker\"}},\"id\":\"7dbdc151-b73e-4caa-ae48-787be6fa3206\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f7af61a4-3c73-4ffc-8f98-ec48a8c0e17f\",\"type\":\"Circle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"7b8bdee8-0da0-4203-b819-14d24ccf9cc9\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"69a00cdf-b954-467f-9baa-bcf32718500f\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"557d3a8d-cec5-4d5c-b441-079850553981\",\"type\":\"HoverTool\"},{\"attributes\":{\"label\":{\"value\":\"radar measurements\"},\"renderers\":[{\"id\":\"5af70674-da21-43a3-8a0b-593fdc65c75e\",\"type\":\"GlyphRenderer\"}]},\"id\":\"93c758f4-a97b-477a-9cb8-efc48a8edfc2\",\"type\":\"LegendItem\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":2},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d73f4669-962e-46e0-9f91-7bd992cff18f\",\"type\":\"Triangle\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"orange\"},\"line_color\":{\"value\":\"orange\"},\"size\":{\"units\":\"screen\",\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f01483ee-119c-469a-b9d1-6ae84fb18053\",\"type\":\"Square\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"black\"},\"size\":{\"units\":\"screen\",\"value\":2},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c7fafe42-6b45-4f2f-8686-22bb13cdfe2d\",\"type\":\"Triangle\"},{\"attributes\":{\"data_source\":{\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"f01483ee-119c-469a-b9d1-6ae84fb18053\",\"type\":\"Square\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"705ebee4-c549-4813-aac7-d223c142fcbe\",\"type\":\"Square\"},\"selection_glyph\":null},\"id\":\"5af70674-da21-43a3-8a0b-593fdc65c75e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966],\"x\":[0.0,0.0,1.5594099920430822,1.6283757614943988,3.8911894651459993,3.9658374320649896,6.855589855540933,6.689801578296302,9.081507398881168,9.093645828718525,11.5739364431016,11.525828548976445,13.59771419967775,13.689858369758673,16.634696015151118,16.480486364641454,19.016094091836436,19.08702292366205,21.33321531283293,21.42926464613217,24.076603095241246,24.185185704354186,26.613749416958893,26.66998160013781,29.578742533991772,29.52627909677591,31.950369748314326,31.93469643377233,34.60798069511845,34.69268294028068,37.15029587640378,37.26409191116504,40.31795280109724,40.186241059307044,42.77335620252378,42.79631682944031,45.356104938334575,45.40255066123385,48.15463908325148,48.150765476713,50.62546246266486,50.57711325664833,53.71388356077708,53.60069671703578,56.042956367975066,56.03289422955345,58.65505269574236,58.65436197154552,60.88370896486399,60.92256651910766,63.376442543984766,63.43722719467073,66.33709248029363,66.16921511597299,68.26698024449146,68.40919591498935,70.82620330060365,70.77126947044947,72.89541977131329,72.97920966322067,75.00441469192852,74.9813372151083,77.11921117307236,77.11212685291916,79.1096570329953,79.07458689862794,80.80830894375104,80.86430547722453,82.6212071999416,82.582737677333,84.17329605095145,84.18028145414613,85.640826362518,85.72454695337454,86.94943405250261,87.06111798525694,88.81397969697854,88.68730215103136,89.5100804869103,89.63510922354179,90.51019506188457,90.60232266792137,91.7196493486914,91.77621615400605,92.85884963938575,92.90835745740704,93.47546007512757,93.63181457168535,95.30817072090046,95.00942935118964,95.51525156726152,95.61291254611699,96.26178830432046,96.3218261900486,97.52372773492239,97.44386990003302,98.21522363569328,98.2756757683339,99.03675158785339,99.0747369123873,99.997837885922,100.0566614433987,101.19987267022799,101.15652602021991,102.38448033981312,102.276961812393,103.00898724467847,103.06458123784411,104.11246487681032,104.05820514581525,105.53503433149251,105.45040988949279,106.83216073966754,106.7760786977466,108.08384682101,108.12610984495936,109.53572279507019,109.51399305929814,111.06087143357706,111.14270521046882,112.91266259311845,112.89008056678388,114.79783616796061,114.78733810447739,116.68769104519986,116.74841885439064,118.95084456479988,118.92050619146042,120.70146819352813,120.81182802702044,123.55475738285247,123.35592810909696,124.91118893037127,125.20822133357063,127.84311960464106,127.7074692757764,129.95395210851757,130.07108014152698,132.09590706995002,132.22209603259185,135.0651269628721,134.9884229608165,137.56372681406168,137.61397572717428,140.33033648166648,140.34621789101053,142.8927984040178,142.8954776848523,145.3928061070692,145.49549371568406,148.25044876250698,148.22258678021768,150.68861582727547,150.7223755846748,153.4206914002384,153.40227356112882,156.04716768116728,156.02940387021735,158.898930601222,158.8844796486543,161.4188191041026,161.4843913966915,163.62956872559397,163.79726207277173,166.81851309681952,166.68929945304367,169.10453249427485,169.18946196159015,172.16665018470968,172.09033647109948,174.648941369694,174.6552463232327,177.0302305541257,177.0600371372939,180.13473666600748,179.90707330768052,182.59932854528878,182.5008055675052,184.7351015183446,184.7370809675618,186.94429607415984,187.01012968486526,189.46459417932672,189.45390729338064,191.73548450652206,191.70292334757943,193.47808430095847,193.5673692800336,195.98208405100988,195.78543436222498,197.72654966856956,197.69110082532217,199.29810977599456,199.3529727656875,201.5400484825339,201.33482303464604,202.9659940039983,202.93826377978604,203.99589861704834,204.04507030818206],\"y\":[0.0,0.0,-0.13849839078194803,0.01966928907115359,-0.13344195061754577,0.07271259409076539,0.41423789453561866,0.4344663582893769,0.5961543030919466,0.6673941169248875,1.6564892510592417,1.616266456679656,2.3211754708166965,2.2981766740572174,2.8982824635750086,2.871527955964281,3.7046433461484383,3.7244646900434937,4.731084259039649,4.75060796876329,5.5733705996172835,5.607558576745408,6.95384946562615,6.969146705561347,8.09602785869088,8.086489979058822,9.867136930673215,9.856289863608326,10.717782156035172,10.74674680825873,12.07211832540893,12.11177217518938,13.477084248346559,13.437443020806038,14.821094446349466,14.832476445474384,16.55469851277081,16.570174021953683,17.294363682408846,17.29577009732887,19.053380759182676,19.032610282251095,19.91839165098872,19.87788367680689,21.074466471937864,21.070922458872285,21.798701554709602,21.79975415432129,22.77529029184872,22.789989955620406,23.420048627968338,23.443750668320707,23.988271245472465,23.928245328264076,24.36190404455693,24.41293482300496,24.88358724851309,24.863561628312198,24.720787772667112,24.749963936738293,25.248587898120945,25.240377154067115,24.945359187579236,24.94475412187551,25.022084328283544,25.01060454407653,24.879785617765968,24.89666983703258,24.634245953719297,24.623544758743357,24.5507214179946,24.55195580981683,23.815912533130664,23.838479320852457,23.518316395066567,23.547956276857963,22.797306201208524,22.766217830175464,22.297953953949616,22.3295312109411,21.677472222637125,21.700399939419718,21.10918072036386,21.123196277312655,20.952536635604893,20.96382044210109,20.223289481121963,20.25710276948675,19.6527528028378,19.592793738418468,19.691658521951993,19.711719037025784,19.172581910725246,19.18349419808333,18.71820684884513,18.701558135911664,18.377039583903205,18.38762072850479,17.36373805988344,17.369852348443384,16.977225582927456,16.98694275251946,16.544046871010117,16.536906857733236,16.39078343322078,16.37237299423586,15.36788146285737,15.374646647798855,15.25207385959236,15.243093394146666,14.460086396077868,14.447885550935082,14.031892908568706,14.025119277938826,13.669701009493325,13.674895530864434,13.56313974450176,13.559681992074136,12.596315889149006,12.606192328998842,12.469159240389516,12.467337545512608,12.559159611543869,12.557630491805885,12.104434705231998,12.11055581949683,11.996644963514548,11.994314043705927,12.289742093334372,12.300853712356831,12.828444092997415,12.807668008558757,12.78097253854232,12.811217156002083,13.318288744682484,13.303765533807102,13.702623858433888,13.714994721893941,14.499261021945841,14.513091776351095,15.055468031321514,15.046490271107947,16.20210934751786,16.208572976809588,17.02005668400311,17.02261553929934,17.98295004208316,17.983739838733268,19.1649702652659,19.17873498729015,20.47244740910899,20.469055967167773,22.111842078259574,22.116717416418197,23.49587591175642,23.49243004906266,24.805973040352164,24.803353609204553,26.03277893741706,26.030475442648132,27.422425993862426,27.434054039943124,28.77163062916521,28.801656683767074,30.204096105397653,30.180037068070042,31.37439169419012,31.38967001325801,32.34205182668948,32.32794470500399,33.45865159716371,33.46030413563589,34.208083604536434,34.21353770045812,35.13540781925898,35.09111392419069,35.75802196954066,35.739173080169316,36.51078233628103,36.51089974405719,36.94713423581993,36.960092432867086,37.401205109782374,37.398735901583215,37.56820328370095,37.56154569897384,37.281187830993915,37.29835440962303,37.393749733996934,37.35637616722481,37.72689246493463,37.71988940408541,37.296630305479276,37.30678364701694,36.98968455104059,36.95244455931782,36.462033294054905,36.45752593953198,36.1910744584841,36.1998776953872]}},\"id\":\"4f1fcf86-f657-470d-ac43-5226378dc0a7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"formatter\":{\"id\":\"3df90455-15f5-4c93-afe2-713a7cde7508\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"2004d8a5-bfd6-440e-928a-d3c22863857d\",\"type\":\"BasicTicker\"}},\"id\":\"4286acb0-a95f-414b-82a4-fa1c56a059f6\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"cdf4833c-42d1-48ec-9fbb-f57752b43fd7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3c524699-1533-4f60-bd47-c4e4285007f5\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"9937c409-97da-4eb2-a489-edef7741fba9\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"134d1af6-2c01-4a45-be01-3d679655cd10\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2004d8a5-bfd6-440e-928a-d3c22863857d\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3df90455-15f5-4c93-afe2-713a7cde7508\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"705ebee4-c549-4813-aac7-d223c142fcbe\",\"type\":\"Square\"},{\"attributes\":{\"data_source\":{\"id\":\"4f1fcf86-f657-470d-ac43-5226378dc0a7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c7fafe42-6b45-4f2f-8686-22bb13cdfe2d\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"d73f4669-962e-46e0-9f91-7bd992cff18f\",\"type\":\"Triangle\"},\"selection_glyph\":null},\"id\":\"ae50878e-7f26-4e01-812a-dcf9ab35316b\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.7853981633974483,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966,-1.5707963267948966],\"x\":[0.0,0.0,2.098967,2.098967,4.291359,4.291359,6.569422,6.569422,8.924371,8.924371,11.34677,11.34677,13.82695,13.82695,16.35537,16.35537,18.92299,18.92299,21.52152,21.52152,24.14369,24.14369,26.78329,26.78329,29.43523,29.43523,32.09547,32.09547,34.76081,34.76081,37.42874,37.42874,40.09711,40.09711,42.76381,42.76381,45.42651,45.42651,48.08234,48.08234,50.72763,50.72763,53.35773,53.35773,55.96692,55.96692,58.54835,58.54835,61.09413,61.09413,63.59551,63.59551,66.04312,66.04312,68.4273,68.4273,70.73845,70.73845,72.96749,72.96749,75.10617,75.10617,77.14752,77.14752,79.0861,79.0861,80.91825,80.91825,82.64225,82.64225,84.25837,84.25837,85.7688,85.7688,87.1776,87.1776,88.49045,88.49045,89.71448,89.71448,90.85799,90.85799,91.93022,91.93022,92.94111,92.94111,93.90109,93.90109,94.82094,94.82094,95.71161,95.71161,96.58418,96.58418,97.44996,97.44996,98.31977,98.31977,99.20492,99.20492,100.1165,100.1165,101.0655,101.0655,102.0628,102.0628,103.1189,103.1189,104.2439,104.2439,105.4471,105.4471,106.7373,106.7373,108.1217,108.1217,109.6065,109.6065,111.1961,111.1961,112.8933,112.8933,114.6988,114.6988,116.6112,116.6112,118.6276,118.6276,120.7427,120.7427,122.9501,122.9501,125.2417,125.2417,127.6087,127.6087,130.0415,130.0415,132.5304,132.5304,135.066,135.066,137.6394,137.6394,140.2424,140.2424,142.8679,142.8679,145.5099,145.5099,148.1635,148.1635,150.8248,150.8248,153.4907,153.4907,156.1589,156.1589,158.8271,158.8271,161.4933,161.4933,164.1551,164.1551,166.8094,166.8094,169.4525,169.4525,172.0795,172.0795,174.6846,174.6846,177.2606,177.2606,179.7995,179.7995,182.2925,182.2925,184.7302,184.7302,187.1027,187.1027,189.4007,189.4007,191.6151,191.6151,193.7378,193.7378,195.7622,195.7622,197.6831,197.6831,199.4972,199.4972,201.2029,201.2029,202.8011,202.8011,204.2941,204.2941],\"y\":[0.0,0.0,0.0522228,0.0522228,0.2153118,0.2153118,0.4960956,0.4960956,0.8992403,0.8992403,1.426997,1.426997,2.079045,2.079045,2.852433,2.852433,3.74161,3.74161,4.738551,4.738551,5.832949,5.832949,7.012457,7.012457,8.262985,8.262985,9.569013,9.569013,10.91392,10.91392,12.28034,12.28034,13.65048,13.65048,15.00648,15.00648,16.33075,16.33075,17.60632,17.60632,18.81717,18.81717,19.94857,19.94857,20.98742,20.98742,21.92253,21.92253,22.7449,22.7449,23.44793,23.44793,24.02757,24.02757,24.48242,24.48242,24.81366,24.81366,25.02499,25.02499,25.12237,25.12237,25.11374,25.11374,25.00864,25.00864,24.81776,24.81776,24.5525,24.5525,24.22449,24.22449,23.84512,23.84512,23.42518,23.42518,22.97451,22.97451,22.50173,22.50173,22.01409,22.01409,21.51741,21.51741,21.01603,21.01603,20.51295,20.51295,20.00996,20.00996,19.50782,19.50782,19.00655,19.00655,18.50597,18.50597,18.00486,18.00486,17.50296,17.50296,17.00014,17.00014,16.49696,16.49696,15.99493,15.99493,15.49673,15.49673,15.00637,15.00637,14.52929,14.52929,14.07238,14.07238,13.64396,13.64396,13.25356,13.25356,12.91178,12.91178,12.62989,12.62989,12.4195,12.4195,12.29211,12.29211,12.25864,12.25864,12.32894,12.32894,12.5114,12.5114,12.8125,12.8125,13.23651,13.23651,13.78526,13.78526,14.45798,14.45798,15.2513,15.2513,16.15922,16.15922,17.17333,17.17333,18.28295,18.28295,19.47543,19.47543,20.73641,20.73641,22.05016,22.05016,23.39992,23.39992,24.76822,24.76822,26.13723,26.13723,27.48911,27.48911,28.80636,28.80636,30.07213,30.07213,31.27061,31.27061,32.38732,32.38732,33.40945,33.40945,34.32617,34.32617,35.12887,35.12887,35.81136,35.81136,36.37004,36.37004,36.80395,36.80395,37.11471,37.11471,37.3064,37.3064,37.38535,37.38535,37.3598,37.3598,37.2395,37.2395,37.03531,37.03531,36.75869,36.75869,36.42125,36.42125,36.03433,36.03433]}},\"id\":\"cdf4833c-42d1-48ec-9fbb-f57752b43fd7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"8c7199d1-4d53-4e0c-98cb-9917c7fca8ac\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"9a77a732-1625-4302-a73f-ab981ebde7eb\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"white\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"f7af61a4-3c73-4ffc-8f98-ec48a8c0e17f\",\"type\":\"Circle\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_color\":{\"value\":\"violet\"},\"line_color\":{\"value\":\"violet\"},\"line_width\":{\"value\":0.5},\"size\":{\"units\":\"screen\",\"value\":7},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3c524699-1533-4f60-bd47-c4e4285007f5\",\"type\":\"Triangle\"},{\"attributes\":{\"below\":[{\"id\":\"5484fc0f-b1f8-429f-86cd-324967756a64\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"4286acb0-a95f-414b-82a4-fa1c56a059f6\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"5484fc0f-b1f8-429f-86cd-324967756a64\",\"type\":\"LinearAxis\"},{\"id\":\"7dbdc151-b73e-4caa-ae48-787be6fa3206\",\"type\":\"Grid\"},{\"id\":\"4286acb0-a95f-414b-82a4-fa1c56a059f6\",\"type\":\"LinearAxis\"},{\"id\":\"76d311dd-cb5e-417a-925f-dc6ce1a31589\",\"type\":\"Grid\"},{\"id\":\"390bd6cc-d624-4652-b5a5-311e517c8fd7\",\"type\":\"Legend\"},{\"id\":\"5af70674-da21-43a3-8a0b-593fdc65c75e\",\"type\":\"GlyphRenderer\"},{\"id\":\"69a00cdf-b954-467f-9baa-bcf32718500f\",\"type\":\"GlyphRenderer\"},{\"id\":\"134d1af6-2c01-4a45-be01-3d679655cd10\",\"type\":\"GlyphRenderer\"},{\"id\":\"ae50878e-7f26-4e01-812a-dcf9ab35316b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"d5363bad-87d1-4e0f-b26e-90afc39898d1\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"fd21c176-3b8a-4ebd-9136-64300c03526b\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"37969c17-36c7-40c0-92d3-a83c0921fa0f\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"8c7199d1-4d53-4e0c-98cb-9917c7fca8ac\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"9a77a732-1625-4302-a73f-ab981ebde7eb\",\"type\":\"DataRange1d\"}},\"id\":\"5b0144e9-7d0f-442f-b90d-431a30159469\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"ground truth\"},\"renderers\":[{\"id\":\"134d1af6-2c01-4a45-be01-3d679655cd10\",\"type\":\"GlyphRenderer\"}]},\"id\":\"9525cc8d-e647-4f6b-a7ce-21294a11db46\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.8115954333974483,0.8374241433974483,0.8587034533974482,0.8847589033974483,0.9096662633974483,0.9307472633974483,0.9584734633974483,0.9827248633974484,1.0015480633974483,1.0220566633974482,1.0397609633974483,1.0581912633974482,1.0757311633974482,1.0892985633974483,1.1022244633974483,1.1144393633974483,1.1237819633974484,1.1326535633974482,1.1360961633974482,1.1410151633974484,1.1407104633974483,1.1447156633974482,1.1443779633974482,1.1420468633974483,1.1419493633974482,1.1341204633974482,1.1294385633974482,1.1209849633974482,1.1154582633974481,1.1089021633974483,1.1022626633974482,1.0909114633974482,1.0828103633974484,1.0775091633974483,1.0664208633974483,1.0549730633974483,1.0475788633974483,1.0393511633974484,1.0307653633974483,1.0240146633974483,1.0151529633974483,1.0074725633974482,1.0007657633974483,0.9928131633974483,0.9873998633974482,0.9783785633974482,0.9696163633974483,0.9678251633974483,0.9583859633974483,0.9525999633974482,0.9464447633974483,0.9393021633974483,0.9314619633974482,0.9265130633974483,0.9175808633974483,0.9183949633974483,0.9112821633974483,0.9050895633974483,0.9011501633974482,0.8986041633974483,0.8921872633974482,0.8882747633974483,0.8894078633974483,0.8858612633974483,0.8887250633974483,0.8886887633974483,0.8881904633974482,0.8907427633974483,0.8932654633974483,0.8934478633974483,0.9047992633974483,0.9097515633974483,0.9119451633974482,0.9175449633974483,0.9257989633974483,0.9292035633974483,0.9335976633974483,0.9447177633974483,0.9486367633974483,0.9561073633974483,0.9621583633974483,0.9617327633974483,0.9647729633974483,0.9729415633974483,0.9773913633974483,0.9741216633974483,0.9804797633974482,0.9820184633974482,0.9785157633974483,0.9801142633974483,0.9777381633974482,0.9766574633974483,0.9763884633974482,0.9748518633974483,0.9719991633974483,0.9706172633974482,0.9697582633974483,0.9671568633974483,0.9616302633974483],\"x\":[0.0,1.8120890065536968,4.195282898131183,6.439263951838519,8.897494094590057,11.444709998562601,13.657165989272517,16.28195527013715,19.363047979292386,21.621344108905937,24.560055363578353,26.541910417680082,29.47157812077767,31.792798199174168,35.05993022827336,37.49732769560551,39.900941693889585,42.571418733066885,45.64898040657271,47.93305501262085,50.5736513340699,53.52770394894018,55.8669730738404,58.579938550190896,60.764808537463345,63.74778170921791,65.88384342247551,68.67592580850912,70.7403296216073,73.0731712914125,74.9747821562663,77.13859354321183,79.17177113047259,81.1423002728638,82.50846076380661,84.28976505279456,85.97430637614002,87.61705943212222,88.41905450805521,89.78205385511532,90.84185210246,92.04917907179099,93.31857958173161,93.74234112734182,94.49395448086288,95.60968374739882,96.55895399200789,97.53327961948968,98.41615468912647,98.97815733129316,100.44057706513598,101.16930696477358,102.08068815353765,102.77582654264684,103.90499434379076,105.31590025369279,106.43875960011057,108.13143858278916,109.3876500232867,111.42573952890967,112.79694011066982,114.91642361180433,116.87120218708426,118.84992917989058,120.93423833970587,123.14220229018764,125.37589942108642,127.5063888288843,130.3344485564308,132.446615000554,135.1266605192927,137.65320233691628,140.30474598765764,142.6256163737405,145.78932837378665,148.14635115055142,150.64925114427615,153.46554947246355,156.009171438787,159.01391055766305,161.52867447954372,164.11556634790054,166.74825687834473,169.34502678163898,172.13478419876878,174.4744732696961,177.21134920572447,179.54285820847673,182.0465924352896,184.83348920835274,187.29582978840955,189.73812421115719,191.6823753367516,193.5554476756831,195.50671773399304,197.5820787172974,199.35645559429446,200.93225566805958,202.65049161342554,203.80860115543211],\"y\":[0.0,0.04748264786462898,0.21846084257143278,0.4728794469724612,0.8869824485022623,1.4295787391050676,1.9991549428591089,2.8464834078654198,3.871222944913029,4.747620196138109,5.923344376318675,6.900747701680275,8.245189957744993,9.498908426060733,10.995322083099882,12.294281139537029,13.62433332599153,14.98171157454254,16.521338038994937,17.534855906435702,18.783412268872503,19.862010699894274,20.984967829539112,21.981451628861056,22.63984645834687,23.7441692656956,23.954128228185038,24.60585513894103,24.672752931702785,25.034285363594634,25.13775096364854,25.294760630930256,24.96978639685302,24.870365557040074,24.811385251764612,24.33124510854905,23.754746342657693,23.512732123359523,22.949778454520246,22.482580932036498,22.097357323528183,21.528897814318178,21.071201563577834,20.507109611183132,19.885448646965767,19.58036957994624,18.86880294686719,18.173452009657918,18.155616058011667,17.294873926738514,16.952114087407445,16.435307956573727,15.835855802267123,15.119504041990588,14.760651532259974,14.002587512464663,14.240073777894272,13.684378949243364,13.15564377721389,12.955666227391628,12.824120189313772,12.318684155068672,12.06590888021587,12.406315021995534,12.190468227480695,12.769378268831465,12.996404104352319,13.153033749571646,13.781046422209648,14.342327973694676,14.657480322136617,16.514498795966816,17.53786603036044,18.14581064875866,19.3785257148268,20.937624190378223,21.814759909721822,22.91149960336169,25.067774793011935,26.19025159958435,27.84544498336496,29.315046248434605,29.71208219098014,30.70626687316412,32.666633096223684,33.915666311486454,33.846738229507025,35.47669757489859,36.262562461987635,36.14505716298903,36.93751853374997,36.951022287908145,37.11469778282844,37.42335772049185,37.489076100122446,37.302984337874236,37.35274592637205,37.46936679669847,37.24453567970666,36.29413616641104]}},\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"fd21c176-3b8a-4ebd-9136-64300c03526b\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"d5363bad-87d1-4e0f-b26e-90afc39898d1\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"lidar measurements\"},\"renderers\":[{\"id\":\"69a00cdf-b954-467f-9baa-bcf32718500f\",\"type\":\"GlyphRenderer\"}]},\"id\":\"5ce4bee4-edb6-4ae1-aae7-f278b077b0bd\",\"type\":\"LegendItem\"}],\"root_ids\":[\"5b0144e9-7d0f-442f-b90d-431a30159469\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"b0ce5488-c9d3-46e3-b1cb-84e392cc65f7\",\"elementid\":\"1e850bc5-b65b-46b3-85a1-92fbeffc55c7\",\"modelid\":\"5b0144e9-7d0f-442f-b90d-431a30159469\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"1e850bc5-b65b-46b3-85a1-92fbeffc55c7\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hover6 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover6])\n",
    "\n",
    "p.square(\n",
    "  'x', 'y', size = 3, \n",
    "  fill_color = \"orange\",\n",
    "  line_color = \"orange\",\n",
    "  fill_alpha = 1,\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"radar measurements\", \n",
    "  source = radar_source)\n",
    "\n",
    "p.circle(\n",
    "  'x', 'y', size = 15, \n",
    "  fill_color = \"green\",\n",
    "  line_color = \"white\",\n",
    "  fill_alpha = 0.2,\n",
    "  line_width = 1, \n",
    "  legend = \"lidar measurements\", \n",
    "  source = lidar_source)\n",
    "\n",
    "p.triangle(\n",
    "  'x', 'y', size = 7, \n",
    "  fill_color = \"violet\",\n",
    "  line_color = \"violet\",\n",
    "  fill_alpha = 1,\n",
    "  angle = 'angle', \n",
    "  line_width = 0.5, \n",
    "  legend = \"ground truth\",\n",
    "  source = truth_source)\n",
    "\n",
    "\n",
    "p.triangle(\n",
    "  'x', 'y', size = 2, \n",
    "  fill_color = \"black\",\n",
    "  line_color = \"black\",\n",
    "  fill_alpha = 1,\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"state predictions\", \n",
    "  source = state_source)\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <div class=\"bk-plotdiv\" id=\"a6d8fae6-b4dd-4d38-b210-2588cc694573\"></div>\n",
       "    </div>\n",
       "<script type=\"text/javascript\">\n",
       "  \n",
       "  (function(global) {\n",
       "    function now() {\n",
       "      return new Date();\n",
       "    }\n",
       "  \n",
       "    var force = false;\n",
       "  \n",
       "    if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
       "      window._bokeh_onload_callbacks = [];\n",
       "      window._bokeh_is_loading = undefined;\n",
       "    }\n",
       "  \n",
       "  \n",
       "    \n",
       "    if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "      window._bokeh_timeout = Date.now() + 0;\n",
       "      window._bokeh_failed_load = false;\n",
       "    }\n",
       "  \n",
       "    var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "       \"<div style='background-color: #fdd'>\\n\"+\n",
       "       \"<p>\\n\"+\n",
       "       \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "       \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "       \"</p>\\n\"+\n",
       "       \"<ul>\\n\"+\n",
       "       \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "       \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "       \"</ul>\\n\"+\n",
       "       \"<code>\\n\"+\n",
       "       \"from bokeh.resources import INLINE\\n\"+\n",
       "       \"output_notebook(resources=INLINE)\\n\"+\n",
       "       \"</code>\\n\"+\n",
       "       \"</div>\"}};\n",
       "  \n",
       "    function display_loaded() {\n",
       "      if (window.Bokeh !== undefined) {\n",
       "        document.getElementById(\"a6d8fae6-b4dd-4d38-b210-2588cc694573\").textContent = \"BokehJS successfully loaded.\";\n",
       "      } else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(display_loaded, 100)\n",
       "      }\n",
       "    }\n",
       "  \n",
       "    function run_callbacks() {\n",
       "      window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
       "      delete window._bokeh_onload_callbacks\n",
       "      console.info(\"Bokeh: all callbacks have finished\");\n",
       "    }\n",
       "  \n",
       "    function load_libs(js_urls, callback) {\n",
       "      window._bokeh_onload_callbacks.push(callback);\n",
       "      if (window._bokeh_is_loading > 0) {\n",
       "        console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "        return null;\n",
       "      }\n",
       "      if (js_urls == null || js_urls.length === 0) {\n",
       "        run_callbacks();\n",
       "        return null;\n",
       "      }\n",
       "      console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "      window._bokeh_is_loading = js_urls.length;\n",
       "      for (var i = 0; i < js_urls.length; i++) {\n",
       "        var url = js_urls[i];\n",
       "        var s = document.createElement('script');\n",
       "        s.src = url;\n",
       "        s.async = false;\n",
       "        s.onreadystatechange = s.onload = function() {\n",
       "          window._bokeh_is_loading--;\n",
       "          if (window._bokeh_is_loading === 0) {\n",
       "            console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
       "            run_callbacks()\n",
       "          }\n",
       "        };\n",
       "        s.onerror = function() {\n",
       "          console.warn(\"failed to load library \" + url);\n",
       "        };\n",
       "        console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "      }\n",
       "    };var element = document.getElementById(\"a6d8fae6-b4dd-4d38-b210-2588cc694573\");\n",
       "    if (element == null) {\n",
       "      console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'a6d8fae6-b4dd-4d38-b210-2588cc694573' but no matching script tag was found. \")\n",
       "      return false;\n",
       "    }\n",
       "  \n",
       "    var js_urls = [];\n",
       "  \n",
       "    var inline_js = [\n",
       "      function(Bokeh) {\n",
       "        (function() {\n",
       "          var fn = function() {\n",
       "            var docs_json = {\"ab304e06-592b-440e-ba6d-a8b8cca832fe\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"14353271-1801-4e35-860f-f0250d1d6a8d\",\"type\":\"Square\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"d687ef42-abe6-45cd-aee9-a22a5cad108c\",\"type\":\"Square\"},\"selection_glyph\":null},\"id\":\"c501abcf-4686-4dec-8448-4fd84154028d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"67dd7175-fb75-4d79-83bc-de0aaf89b705\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"30c18e4e-2405-4e29-833e-8ec71a1e11cd\",\"type\":\"BasicTicker\"}},\"id\":\"afaafbba-a3cd-4389-a6c8-f0445a1b367a\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"df321c30-8ae7-4a1a-bee4-ebc024519ab2\",\"type\":\"ToolEvents\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"54b7a4df-86e5-4531-82c1-92cb3969705f\",\"type\":\"HoverTool\"}]},\"id\":\"48c862ad-e515-4e90-9597-3ce46a60b3ba\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"67dd7175-fb75-4d79-83bc-de0aaf89b705\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"radar measurements\"},\"renderers\":[{\"id\":\"c501abcf-4686-4dec-8448-4fd84154028d\",\"type\":\"GlyphRenderer\"}]},\"id\":\"d39d4bad-d61a-45c1-9727-36ac61c7ef0f\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"dce32e80-757e-4aab-8436-2ebcfdcbab4b\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"e5676fa8-226d-49ff-ad89-1c6cfd8234ec\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"ground truth\"},\"renderers\":[{\"id\":\"02ca0436-c096-4ad0-87a9-cb8e5b5fbc8e\",\"type\":\"GlyphRenderer\"}]},\"id\":\"b3a634f3-de81-4283-8aa4-9052f221ae6b\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b9424887-a794-4e3e-81e6-ebaf27a83d61\",\"type\":\"BasicTicker\"}},\"id\":\"6f207c1c-af44-49e2-8f36-818b2c1db752\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"index\",\"$index\"],[\"x , y\",\"$x, $y\"],[\"angle radians\",\"@angle\"]]},\"id\":\"54b7a4df-86e5-4531-82c1-92cb3969705f\",\"type\":\"HoverTool\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"d687ef42-abe6-45cd-aee9-a22a5cad108c\",\"type\":\"Square\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"white\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"6cb31dde-9d87-4f5e-b11a-6ddf2e8b4124\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"state predictions\"},\"renderers\":[{\"id\":\"2405083c-1e1c-4850-95ec-9b80ba7fed53\",\"type\":\"GlyphRenderer\"}]},\"id\":\"d4207c62-bc02-46b6-9e4b-c16e533d9bef\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"2a56f1ef-0137-48af-b7fd-7ed2ac186c18\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"5fac7dd9-f0f0-47f6-b9cc-b62b799ee0af\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"cf694961-3ad6-4cfa-a274-fb7f9ff6ce20\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"2405083c-1e1c-4850-95ec-9b80ba7fed53\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"0701a426-0bdf-4c58-9d37-32d3739015ac\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"aa83e324-5f3a-44ed-8ec5-ed810e0fda76\",\"type\":\"Line\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"5a513131-9001-43a2-ad29-09e67fea321c\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"02ca0436-c096-4ad0-87a9-cb8e5b5fbc8e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"c4fff06a-b448-4e96-8a84-0ec5031491d5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"30c18e4e-2405-4e29-833e-8ec71a1e11cd\",\"type\":\"BasicTicker\"}},\"id\":\"29df0b40-a083-468f-bf23-effc70d913fe\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":[0.0,1.559445,3.890927,6.863517,9.077331,11.57555,13.59209,16.64559,19.01058,21.33124,24.07871,26.60525,29.58639,31.9416,34.61568,37.14036,40.32853,42.76639,45.35721,48.15409,50.62278,53.72678,56.03223,58.6632,60.87224,63.38208,66.34029,68.26205,70.82748,72.89226,75.00209,77.12245,79.1089,80.80743,82.62158,84.17335,85.63776,86.94492,88.82267,89.49667,90.51327,91.71782,92.85989,93.46683,95.32289,95.50389,96.26405,97.52863,98.21047,99.03627,99.99686,101.2038,102.3868,103.0034,104.1144,105.5409,106.8312,108.0836,109.5344,111.063,112.9126,114.801,116.6871,118.9528,120.6951,123.5682,124.8938,127.8531,129.9473,132.0919,135.0735,137.5606,140.3314,142.8884,145.392,148.2509,150.6859,153.422,156.0466,158.9049,161.4116,163.6251,166.8278,169.0972,172.1752,174.643,177.0301,180.1454,182.5994,184.7319,186.9463,189.4652,191.7353,193.4712,195.9914,197.7246,199.2941,201.5491,202.9624,203.9906],\"y\":[0.0,-0.1385015,-0.1341657,0.4168175,0.5932112,1.6669,2.311915,2.902999,3.705553,4.732053,5.569675,6.96102,8.08789,9.880168,10.6988,12.08833,13.46661,14.82937,16.55239,17.28347,19.07211,19.89821,21.0923,21.78207,22.78765,23.4069,23.99586,24.35817,24.88439,24.71354,25.25945,24.92967,25.03687,24.86882,24.63932,24.55042,23.80798,23.52704,22.78691,22.30817,21.66767,21.11524,20.95372,20.21548,19.65849,19.6984,19.15973,18.72696,18.3739,17.35698,16.98822,16.53684,16.39923,15.35302,15.27083,14.44125,14.04819,13.6604,13.57136,12.58139,12.48773,12.55057,12.10355,12.00094,12.2918,12.8297,12.77429,13.32727,13.6963,14.50702,15.04748,16.2147,17.00802,17.99183,19.16167,20.47536,22.11423,23.49086,24.80844,26.03078,27.42561,28.76827,30.20623,31.37172,32.34041,33.46252,34.20094,35.14229,35.75303,36.51547,36.94045,37.40516,37.56307,37.27891,37.39908,37.72855,37.28617,36.99733,36.45683,36.1967]}},\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":[0.0,0.0,2.098967,2.098967,4.291359,4.291359,6.569422,6.569422,8.924371,8.924371,11.34677,11.34677,13.82695,13.82695,16.35537,16.35537,18.92299,18.92299,21.52152,21.52152,24.14369,24.14369,26.78329,26.78329,29.43523,29.43523,32.09547,32.09547,34.76081,34.76081,37.42874,37.42874,40.09711,40.09711,42.76381,42.76381,45.42651,45.42651,48.08234,48.08234,50.72763,50.72763,53.35773,53.35773,55.96692,55.96692,58.54835,58.54835,61.09413,61.09413,63.59551,63.59551,66.04312,66.04312,68.4273,68.4273,70.73845,70.73845,72.96749,72.96749,75.10617,75.10617,77.14752,77.14752,79.0861,79.0861,80.91825,80.91825,82.64225,82.64225,84.25837,84.25837,85.7688,85.7688,87.1776,87.1776,88.49045,88.49045,89.71448,89.71448,90.85799,90.85799,91.93022,91.93022,92.94111,92.94111,93.90109,93.90109,94.82094,94.82094,95.71161,95.71161,96.58418,96.58418,97.44996,97.44996,98.31977,98.31977,99.20492,99.20492,100.1165,100.1165,101.0655,101.0655,102.0628,102.0628,103.1189,103.1189,104.2439,104.2439,105.4471,105.4471,106.7373,106.7373,108.1217,108.1217,109.6065,109.6065,111.1961,111.1961,112.8933,112.8933,114.6988,114.6988,116.6112,116.6112,118.6276,118.6276,120.7427,120.7427,122.9501,122.9501,125.2417,125.2417,127.6087,127.6087,130.0415,130.0415,132.5304,132.5304,135.066,135.066,137.6394,137.6394,140.2424,140.2424,142.8679,142.8679,145.5099,145.5099,148.1635,148.1635,150.8248,150.8248,153.4907,153.4907,156.1589,156.1589,158.8271,158.8271,161.4933,161.4933,164.1551,164.1551,166.8094,166.8094,169.4525,169.4525,172.0795,172.0795,174.6846,174.6846,177.2606,177.2606,179.7995,179.7995,182.2925,182.2925,184.7302,184.7302,187.1027,187.1027,189.4007,189.4007,191.6151,191.6151,193.7378,193.7378,195.7622,195.7622,197.6831,197.6831,199.4972,199.4972,201.2029,201.2029,202.8011,202.8011,204.2941,204.2941],\"y\":[0.0,0.0,0.0522228,0.0522228,0.2153118,0.2153118,0.4960956,0.4960956,0.8992403,0.8992403,1.426997,1.426997,2.079045,2.079045,2.852433,2.852433,3.74161,3.74161,4.738551,4.738551,5.832949,5.832949,7.012457,7.012457,8.262985,8.262985,9.569013,9.569013,10.91392,10.91392,12.28034,12.28034,13.65048,13.65048,15.00648,15.00648,16.33075,16.33075,17.60632,17.60632,18.81717,18.81717,19.94857,19.94857,20.98742,20.98742,21.92253,21.92253,22.7449,22.7449,23.44793,23.44793,24.02757,24.02757,24.48242,24.48242,24.81366,24.81366,25.02499,25.02499,25.12237,25.12237,25.11374,25.11374,25.00864,25.00864,24.81776,24.81776,24.5525,24.5525,24.22449,24.22449,23.84512,23.84512,23.42518,23.42518,22.97451,22.97451,22.50173,22.50173,22.01409,22.01409,21.51741,21.51741,21.01603,21.01603,20.51295,20.51295,20.00996,20.00996,19.50782,19.50782,19.00655,19.00655,18.50597,18.50597,18.00486,18.00486,17.50296,17.50296,17.00014,17.00014,16.49696,16.49696,15.99493,15.99493,15.49673,15.49673,15.00637,15.00637,14.52929,14.52929,14.07238,14.07238,13.64396,13.64396,13.25356,13.25356,12.91178,12.91178,12.62989,12.62989,12.4195,12.4195,12.29211,12.29211,12.25864,12.25864,12.32894,12.32894,12.5114,12.5114,12.8125,12.8125,13.23651,13.23651,13.78526,13.78526,14.45798,14.45798,15.2513,15.2513,16.15922,16.15922,17.17333,17.17333,18.28295,18.28295,19.47543,19.47543,20.73641,20.73641,22.05016,22.05016,23.39992,23.39992,24.76822,24.76822,26.13723,26.13723,27.48911,27.48911,28.80636,28.80636,30.07213,30.07213,31.27061,31.27061,32.38732,32.38732,33.40945,33.40945,34.32617,34.32617,35.12887,35.12887,35.81136,35.81136,36.37004,36.37004,36.80395,36.80395,37.11471,37.11471,37.3064,37.3064,37.38535,37.38535,37.3598,37.3598,37.2395,37.2395,37.03531,37.03531,36.75869,36.75869,36.42125,36.42125,36.03433,36.03433]}},\"id\":\"0701a426-0bdf-4c58-9d37-32d3739015ac\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"formatter\":{\"id\":\"e5676fa8-226d-49ff-ad89-1c6cfd8234ec\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b9424887-a794-4e3e-81e6-ebaf27a83d61\",\"type\":\"BasicTicker\"}},\"id\":\"e38f8351-4054-477f-8e5c-d8cce546d30b\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"1f1ab7ec-d8e7-4d00-8400-c2e83a1e92ff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"6cb31dde-9d87-4f5e-b11a-6ddf2e8b4124\",\"type\":\"Circle\"},\"hover_glyph\":null,\"nonselection_glyph\":{\"id\":\"34941867-7ff1-4cf0-b758-1b0f5e05a22f\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"a0258fd2-8e21-43d8-9f68-02230cb4a1ca\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"angle\":{\"field\":\"angle\",\"units\":\"rad\"},\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"violet\"},\"line_color\":{\"value\":\"violet\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"14353271-1801-4e35-860f-f0250d1d6a8d\",\"type\":\"Square\"},{\"attributes\":{\"callback\":null},\"id\":\"0e8ba6d0-15af-4209-9af9-76bb5dbd9c29\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":{\"value\":\"navy\"},\"line_dash\":[4,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"aa83e324-5f3a-44ed-8ec5-ed810e0fda76\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":[0.0,0.0,1.5594099920430822,1.6283757614943988,3.8911894651459993,3.9658374320649896,6.855589855540933,6.689801578296302,9.081507398881168,9.093645828718525,11.5739364431016,11.525828548976445,13.59771419967775,13.689858369758673,16.634696015151118,16.480486364641454,19.016094091836436,19.08702292366205,21.33321531283293,21.42926464613217,24.076603095241246,24.185185704354186,26.613749416958893,26.66998160013781,29.578742533991772,29.52627909677591,31.950369748314326,31.93469643377233,34.60798069511845,34.69268294028068,37.15029587640378,37.26409191116504,40.31795280109724,40.186241059307044,42.77335620252378,42.79631682944031,45.356104938334575,45.40255066123385,48.15463908325148,48.150765476713,50.62546246266486,50.57711325664833,53.71388356077708,53.60069671703578,56.042956367975066,56.03289422955345,58.65505269574236,58.65436197154552,60.88370896486399,60.92256651910766,63.376442543984766,63.43722719467073,66.33709248029363,66.16921511597299,68.26698024449146,68.40919591498935,70.82620330060365,70.77126947044947,72.89541977131329,72.97920966322067,75.00441469192852,74.9813372151083,77.11921117307236,77.11212685291916,79.1096570329953,79.07458689862794,80.80830894375104,80.86430547722453,82.6212071999416,82.582737677333,84.17329605095145,84.18028145414613,85.640826362518,85.72454695337454,86.94943405250261,87.06111798525694,88.81397969697854,88.68730215103136,89.5100804869103,89.63510922354179,90.51019506188457,90.60232266792137,91.7196493486914,91.77621615400605,92.85884963938575,92.90835745740704,93.47546007512757,93.63181457168535,95.30817072090046,95.00942935118964,95.51525156726152,95.61291254611699,96.26178830432046,96.3218261900486,97.52372773492239,97.44386990003302,98.21522363569328,98.2756757683339,99.03675158785339,99.0747369123873,99.997837885922,100.0566614433987,101.19987267022799,101.15652602021991,102.38448033981312,102.276961812393,103.00898724467847,103.06458123784411,104.11246487681032,104.05820514581525,105.53503433149251,105.45040988949279,106.83216073966754,106.7760786977466,108.08384682101,108.12610984495936,109.53572279507019,109.51399305929814,111.06087143357706,111.14270521046882,112.91266259311845,112.89008056678388,114.79783616796061,114.78733810447739,116.68769104519986,116.74841885439064,118.95084456479988,118.92050619146042,120.70146819352813,120.81182802702044,123.55475738285247,123.35592810909696,124.91118893037127,125.20822133357063,127.84311960464106,127.7074692757764,129.95395210851757,130.07108014152698,132.09590706995002,132.22209603259185,135.0651269628721,134.9884229608165,137.56372681406168,137.61397572717428,140.33033648166648,140.34621789101053,142.8927984040178,142.8954776848523,145.3928061070692,145.49549371568406,148.25044876250698,148.22258678021768,150.68861582727547,150.7223755846748,153.4206914002384,153.40227356112882,156.04716768116728,156.02940387021735,158.898930601222,158.8844796486543,161.4188191041026,161.4843913966915,163.62956872559397,163.79726207277173,166.81851309681952,166.68929945304367,169.10453249427485,169.18946196159015,172.16665018470968,172.09033647109948,174.648941369694,174.6552463232327,177.0302305541257,177.0600371372939,180.13473666600748,179.90707330768052,182.59932854528878,182.5008055675052,184.7351015183446,184.7370809675618,186.94429607415984,187.01012968486526,189.46459417932672,189.45390729338064,191.73548450652206,191.70292334757943,193.47808430095847,193.5673692800336,195.98208405100988,195.78543436222498,197.72654966856956,197.69110082532217,199.29810977599456,199.3529727656875,201.5400484825339,201.33482303464604,202.9659940039983,202.93826377978604,203.99589861704834,204.04507030818206],\"y\":[0.0,0.0,-0.13849839078194803,0.01966928907115359,-0.13344195061754577,0.07271259409076539,0.41423789453561866,0.4344663582893769,0.5961543030919466,0.6673941169248875,1.6564892510592417,1.616266456679656,2.3211754708166965,2.2981766740572174,2.8982824635750086,2.871527955964281,3.7046433461484383,3.7244646900434937,4.731084259039649,4.75060796876329,5.5733705996172835,5.607558576745408,6.95384946562615,6.969146705561347,8.09602785869088,8.086489979058822,9.867136930673215,9.856289863608326,10.717782156035172,10.74674680825873,12.07211832540893,12.11177217518938,13.477084248346559,13.437443020806038,14.821094446349466,14.832476445474384,16.55469851277081,16.570174021953683,17.294363682408846,17.29577009732887,19.053380759182676,19.032610282251095,19.91839165098872,19.87788367680689,21.074466471937864,21.070922458872285,21.798701554709602,21.79975415432129,22.77529029184872,22.789989955620406,23.420048627968338,23.443750668320707,23.988271245472465,23.928245328264076,24.36190404455693,24.41293482300496,24.88358724851309,24.863561628312198,24.720787772667112,24.749963936738293,25.248587898120945,25.240377154067115,24.945359187579236,24.94475412187551,25.022084328283544,25.01060454407653,24.879785617765968,24.89666983703258,24.634245953719297,24.623544758743357,24.5507214179946,24.55195580981683,23.815912533130664,23.838479320852457,23.518316395066567,23.547956276857963,22.797306201208524,22.766217830175464,22.297953953949616,22.3295312109411,21.677472222637125,21.700399939419718,21.10918072036386,21.123196277312655,20.952536635604893,20.96382044210109,20.223289481121963,20.25710276948675,19.6527528028378,19.592793738418468,19.691658521951993,19.711719037025784,19.172581910725246,19.18349419808333,18.71820684884513,18.701558135911664,18.377039583903205,18.38762072850479,17.36373805988344,17.369852348443384,16.977225582927456,16.98694275251946,16.544046871010117,16.536906857733236,16.39078343322078,16.37237299423586,15.36788146285737,15.374646647798855,15.25207385959236,15.243093394146666,14.460086396077868,14.447885550935082,14.031892908568706,14.025119277938826,13.669701009493325,13.674895530864434,13.56313974450176,13.559681992074136,12.596315889149006,12.606192328998842,12.469159240389516,12.467337545512608,12.559159611543869,12.557630491805885,12.104434705231998,12.11055581949683,11.996644963514548,11.994314043705927,12.289742093334372,12.300853712356831,12.828444092997415,12.807668008558757,12.78097253854232,12.811217156002083,13.318288744682484,13.303765533807102,13.702623858433888,13.714994721893941,14.499261021945841,14.513091776351095,15.055468031321514,15.046490271107947,16.20210934751786,16.208572976809588,17.02005668400311,17.02261553929934,17.98295004208316,17.983739838733268,19.1649702652659,19.17873498729015,20.47244740910899,20.469055967167773,22.111842078259574,22.116717416418197,23.49587591175642,23.49243004906266,24.805973040352164,24.803353609204553,26.03277893741706,26.030475442648132,27.422425993862426,27.434054039943124,28.77163062916521,28.801656683767074,30.204096105397653,30.180037068070042,31.37439169419012,31.38967001325801,32.34205182668948,32.32794470500399,33.45865159716371,33.46030413563589,34.208083604536434,34.21353770045812,35.13540781925898,35.09111392419069,35.75802196954066,35.739173080169316,36.51078233628103,36.51089974405719,36.94713423581993,36.960092432867086,37.401205109782374,37.398735901583215,37.56820328370095,37.56154569897384,37.281187830993915,37.29835440962303,37.393749733996934,37.35637616722481,37.72689246493463,37.71988940408541,37.296630305479276,37.30678364701694,36.98968455104059,36.95244455931782,36.462033294054905,36.45752593953198,36.1910744584841,36.1998776953872]}},\"id\":\"2a56f1ef-0137-48af-b7fd-7ed2ac186c18\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"items\":[{\"id\":\"d39d4bad-d61a-45c1-9727-36ac61c7ef0f\",\"type\":\"LegendItem\"},{\"id\":\"e546e770-2d6f-4a2f-aa0e-f0288338d103\",\"type\":\"LegendItem\"},{\"id\":\"d4207c62-bc02-46b6-9e4b-c16e533d9bef\",\"type\":\"LegendItem\"},{\"id\":\"b3a634f3-de81-4283-8aa4-9052f221ae6b\",\"type\":\"LegendItem\"}],\"location\":\"bottom_right\",\"plot\":{\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d498567a-3f6b-48b5-a44e-6eabe8c23b8a\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"cf694961-3ad6-4cfa-a274-fb7f9ff6ce20\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"e38f8351-4054-477f-8e5c-d8cce546d30b\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"afaafbba-a3cd-4389-a6c8-f0445a1b367a\",\"type\":\"LinearAxis\"}],\"plot_height\":700,\"plot_width\":1000,\"renderers\":[{\"id\":\"e38f8351-4054-477f-8e5c-d8cce546d30b\",\"type\":\"LinearAxis\"},{\"id\":\"6f207c1c-af44-49e2-8f36-818b2c1db752\",\"type\":\"Grid\"},{\"id\":\"afaafbba-a3cd-4389-a6c8-f0445a1b367a\",\"type\":\"LinearAxis\"},{\"id\":\"29df0b40-a083-468f-bf23-effc70d913fe\",\"type\":\"Grid\"},{\"id\":\"d498567a-3f6b-48b5-a44e-6eabe8c23b8a\",\"type\":\"Legend\"},{\"id\":\"c501abcf-4686-4dec-8448-4fd84154028d\",\"type\":\"GlyphRenderer\"},{\"id\":\"a0258fd2-8e21-43d8-9f68-02230cb4a1ca\",\"type\":\"GlyphRenderer\"},{\"id\":\"2405083c-1e1c-4850-95ec-9b80ba7fed53\",\"type\":\"GlyphRenderer\"},{\"id\":\"02ca0436-c096-4ad0-87a9-cb8e5b5fbc8e\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"dce32e80-757e-4aab-8436-2ebcfdcbab4b\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"df321c30-8ae7-4a1a-bee4-ebc024519ab2\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"48c862ad-e515-4e90-9597-3ce46a60b3ba\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"0e8ba6d0-15af-4209-9af9-76bb5dbd9c29\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"c4fff06a-b448-4e96-8a84-0ec5031491d5\",\"type\":\"DataRange1d\"}},\"id\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"b9424887-a794-4e3e-81e6-ebaf27a83d61\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"angle\",\"x\"],\"data\":{\"angle\":[0.7853981633974483,0.8115954333974483,0.8374241433974483,0.8587034533974482,0.8847589033974483,0.9096662633974483,0.9307472633974483,0.9584734633974483,0.9827248633974484,1.0015480633974483,1.0220566633974482,1.0397609633974483,1.0581912633974482,1.0757311633974482,1.0892985633974483,1.1022244633974483,1.1144393633974483,1.1237819633974484,1.1326535633974482,1.1360961633974482,1.1410151633974484,1.1407104633974483,1.1447156633974482,1.1443779633974482,1.1420468633974483,1.1419493633974482,1.1341204633974482,1.1294385633974482,1.1209849633974482,1.1154582633974481,1.1089021633974483,1.1022626633974482,1.0909114633974482,1.0828103633974484,1.0775091633974483,1.0664208633974483,1.0549730633974483,1.0475788633974483,1.0393511633974484,1.0307653633974483,1.0240146633974483,1.0151529633974483,1.0074725633974482,1.0007657633974483,0.9928131633974483,0.9873998633974482,0.9783785633974482,0.9696163633974483,0.9678251633974483,0.9583859633974483,0.9525999633974482,0.9464447633974483,0.9393021633974483,0.9314619633974482,0.9265130633974483,0.9175808633974483,0.9183949633974483,0.9112821633974483,0.9050895633974483,0.9011501633974482,0.8986041633974483,0.8921872633974482,0.8882747633974483,0.8894078633974483,0.8858612633974483,0.8887250633974483,0.8886887633974483,0.8881904633974482,0.8907427633974483,0.8932654633974483,0.8934478633974483,0.9047992633974483,0.9097515633974483,0.9119451633974482,0.9175449633974483,0.9257989633974483,0.9292035633974483,0.9335976633974483,0.9447177633974483,0.9486367633974483,0.9561073633974483,0.9621583633974483,0.9617327633974483,0.9647729633974483,0.9729415633974483,0.9773913633974483,0.9741216633974483,0.9804797633974482,0.9820184633974482,0.9785157633974483,0.9801142633974483,0.9777381633974482,0.9766574633974483,0.9763884633974482,0.9748518633974483,0.9719991633974483,0.9706172633974482,0.9697582633974483,0.9671568633974483,0.9616302633974483],\"x\":[0.0,1.8120890065536968,4.195282898131183,6.439263951838519,8.897494094590057,11.444709998562601,13.657165989272517,16.28195527013715,19.363047979292386,21.621344108905937,24.560055363578353,26.541910417680082,29.47157812077767,31.792798199174168,35.05993022827336,37.49732769560551,39.900941693889585,42.571418733066885,45.64898040657271,47.93305501262085,50.5736513340699,53.52770394894018,55.8669730738404,58.579938550190896,60.764808537463345,63.74778170921791,65.88384342247551,68.67592580850912,70.7403296216073,73.0731712914125,74.9747821562663,77.13859354321183,79.17177113047259,81.1423002728638,82.50846076380661,84.28976505279456,85.97430637614002,87.61705943212222,88.41905450805521,89.78205385511532,90.84185210246,92.04917907179099,93.31857958173161,93.74234112734182,94.49395448086288,95.60968374739882,96.55895399200789,97.53327961948968,98.41615468912647,98.97815733129316,100.44057706513598,101.16930696477358,102.08068815353765,102.77582654264684,103.90499434379076,105.31590025369279,106.43875960011057,108.13143858278916,109.3876500232867,111.42573952890967,112.79694011066982,114.91642361180433,116.87120218708426,118.84992917989058,120.93423833970587,123.14220229018764,125.37589942108642,127.5063888288843,130.3344485564308,132.446615000554,135.1266605192927,137.65320233691628,140.30474598765764,142.6256163737405,145.78932837378665,148.14635115055142,150.64925114427615,153.46554947246355,156.009171438787,159.01391055766305,161.52867447954372,164.11556634790054,166.74825687834473,169.34502678163898,172.13478419876878,174.4744732696961,177.21134920572447,179.54285820847673,182.0465924352896,184.83348920835274,187.29582978840955,189.73812421115719,191.6823753367516,193.5554476756831,195.50671773399304,197.5820787172974,199.35645559429446,200.93225566805958,202.65049161342554,203.80860115543211],\"y\":[0.0,0.04748264786462898,0.21846084257143278,0.4728794469724612,0.8869824485022623,1.4295787391050676,1.9991549428591089,2.8464834078654198,3.871222944913029,4.747620196138109,5.923344376318675,6.900747701680275,8.245189957744993,9.498908426060733,10.995322083099882,12.294281139537029,13.62433332599153,14.98171157454254,16.521338038994937,17.534855906435702,18.783412268872503,19.862010699894274,20.984967829539112,21.981451628861056,22.63984645834687,23.7441692656956,23.954128228185038,24.60585513894103,24.672752931702785,25.034285363594634,25.13775096364854,25.294760630930256,24.96978639685302,24.870365557040074,24.811385251764612,24.33124510854905,23.754746342657693,23.512732123359523,22.949778454520246,22.482580932036498,22.097357323528183,21.528897814318178,21.071201563577834,20.507109611183132,19.885448646965767,19.58036957994624,18.86880294686719,18.173452009657918,18.155616058011667,17.294873926738514,16.952114087407445,16.435307956573727,15.835855802267123,15.119504041990588,14.760651532259974,14.002587512464663,14.240073777894272,13.684378949243364,13.15564377721389,12.955666227391628,12.824120189313772,12.318684155068672,12.06590888021587,12.406315021995534,12.190468227480695,12.769378268831465,12.996404104352319,13.153033749571646,13.781046422209648,14.342327973694676,14.657480322136617,16.514498795966816,17.53786603036044,18.14581064875866,19.3785257148268,20.937624190378223,21.814759909721822,22.91149960336169,25.067774793011935,26.19025159958435,27.84544498336496,29.315046248434605,29.71208219098014,30.70626687316412,32.666633096223684,33.915666311486454,33.846738229507025,35.47669757489859,36.262562461987635,36.14505716298903,36.93751853374997,36.951022287908145,37.11469778282844,37.42335772049185,37.489076100122446,37.302984337874236,37.35274592637205,37.46936679669847,37.24453567970666,36.29413616641104]}},\"id\":\"0ab0a7fa-8dc8-41a1-af42-b2cba937a0da\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"30c18e4e-2405-4e29-833e-8ec71a1e11cd\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"lidar measurements\"},\"renderers\":[{\"id\":\"a0258fd2-8e21-43d8-9f68-02230cb4a1ca\",\"type\":\"GlyphRenderer\"}]},\"id\":\"e546e770-2d6f-4a2f-aa0e-f0288338d103\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_dash\":[4,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5a513131-9001-43a2-ad29-09e67fea321c\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"34941867-7ff1-4cf0-b758-1b0f5e05a22f\",\"type\":\"Circle\"},{\"attributes\":{\"line_color\":{\"value\":\"orange\"},\"line_width\":{\"value\":2},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5fac7dd9-f0f0-47f6-b9cc-b62b799ee0af\",\"type\":\"Line\"}],\"root_ids\":[\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.4\"}};\n",
       "            var render_items = [{\"docid\":\"ab304e06-592b-440e-ba6d-a8b8cca832fe\",\"elementid\":\"a6d8fae6-b4dd-4d38-b210-2588cc694573\",\"modelid\":\"57309cc5-0aa4-4c4f-bfcd-84f85291fb93\"}];\n",
       "            \n",
       "            Bokeh.embed.embed_items(docs_json, render_items);\n",
       "          };\n",
       "          if (document.readyState != \"loading\") fn();\n",
       "          else document.addEventListener(\"DOMContentLoaded\", fn);\n",
       "        })();\n",
       "      },\n",
       "      function(Bokeh) {\n",
       "      }\n",
       "    ];\n",
       "  \n",
       "    function run_inline_js() {\n",
       "      \n",
       "      if ((window.Bokeh !== undefined) || (force === true)) {\n",
       "        for (var i = 0; i < inline_js.length; i++) {\n",
       "          inline_js[i](window.Bokeh);\n",
       "        }if (force === true) {\n",
       "          display_loaded();\n",
       "        }} else if (Date.now() < window._bokeh_timeout) {\n",
       "        setTimeout(run_inline_js, 100);\n",
       "      } else if (!window._bokeh_failed_load) {\n",
       "        console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "        window._bokeh_failed_load = true;\n",
       "      } else if (force !== true) {\n",
       "        var cell = $(document.getElementById(\"a6d8fae6-b4dd-4d38-b210-2588cc694573\")).parents('.cell').data().cell;\n",
       "        cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "      }\n",
       "  \n",
       "    }\n",
       "  \n",
       "    if (window._bokeh_is_loading === 0) {\n",
       "      console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "      run_inline_js();\n",
       "    } else {\n",
       "      load_libs(js_urls, function() {\n",
       "        console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "        run_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }(this));\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hover7 = HoverTool( tooltips = [\n",
    "            (\"index\", \"$index\"),\n",
    "            (\"x , y\", \"$x, $y\"),\n",
    "            (\"angle radians\", \"@angle\")])\n",
    "\n",
    "p = figure(plot_width = 1000, plot_height = 700, tools = [hover7])\n",
    "\n",
    "p.square(\n",
    "  'x', 'y', size = 10, \n",
    "  fill_color = \"violet\",\n",
    "  line_color = \"violet\",\n",
    "  fill_alpha = 0.5,\n",
    "  angle = 'angle', \n",
    "  line_width = 1, \n",
    "  legend = \"radar measurements\", \n",
    "  source = radar_source)\n",
    "\n",
    "p.circle(\n",
    "  'x', 'y', size = 10, \n",
    "  fill_color = \"green\",\n",
    "  line_color = \"white\",\n",
    "  fill_alpha = 0.4,\n",
    "  line_width = 1, \n",
    "  legend = \"lidar measurements\", \n",
    "  source = lidar_source)\n",
    "\n",
    "p.line(state_xs, state_ys, line_width = 2, color='orange', legend = \"state predictions\")\n",
    "p.line(truth_xs, truth_ys, line_dash = \"4 4\", line_width = 1, color='navy', legend = \"ground truth\")\n",
    "\n",
    "p.legend.location = \"bottom_right\"\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
